regex 基本
-
* 和 + :
- * 表示 0 个或多个
"a*" - + 表示 1 个或多个
"a+"
- * 表示 0 个或多个
-
[]
- 选择项目
- [1, 2, 3] → 三个数字里任意一个
- [abc] → 三个字母里任意一个
- [0-9] → 0~9 里任意一个
-
()
- 分组
- (abc) → 存在 abc 连在一起的组
- (abc)+ → 存在 一个或多个 abc 连在一起的组
-
{}
- 出现次数
(abc){3}→ abc 连续出现3次(abc){3,}→ abc 连续出现3次或以上
-
.
- 任意字符
a.*b→ ab之间可以包含任意数字的任意字符
-
|
- 或
(ab|bc)→ ab 或 bc
-
?
-
\
-
^
^→ 字符串开始[^0-9]→ 表示否定,not 0-9
-
$
$→ 字符串结束
-
\d
- 表示数字
\d{4}→ 出现4个数字
向前、向后 lookahead lookbehind
\d(?=abc)
- 筛选出 后面跟着 abc 的数字
(?<=abc)\d - 筛选出 前面跟着 abc 的数字
grep 不支持 lookaround, 建议是 lookaround 之后再 tr 删除字符吧