正则表达式简介

1. 元字符 (grep, sed)

1.1. 句点元字符 .

通配元字符,匹配任意字符,除了换行符。

1.2. 反斜杠元字符 \\

将其后面的一个字符解释为普通字符而不是元字符。

1.3. 星号元字符 \*

其紧挨着的之前的匹配有 0+ 次匹配机会。

1.4. 位置元字符 ^, $

^ 匹配字符串的最前面。
$ 匹配字符串的最后面。

1.5. 字符组元字符 [ ], 连字符元字符 -, 补字号 ^

[] 匹配方括号内的左右字符。
\- 连字符元字符仅在字符组元字符内有意义,表示一段连续字符范围。
^ 表示排除某些字符。

1.6. 范围字符串 \\{ \\}

\\{n,m\\} 匹配 n~m 次。
\\{n\\} 匹配 n 次。
\\{n,\\} 匹配 n+ 次。

1.7. 特殊字符类

[[:alpha:]] 匹配任意字母字符,大写或小写
[[:alnum:]] 匹配任意字母数字字符,0-9, a-z, A-Z
[[:blank:]] 匹配空格或制表符字符
[[:digit:]] 匹配任意数字字符,0-9
[[:lower:]] 匹配任意小写字母,a-z
[[:print:]] 匹配任意可打印字符
[[:punct:]] 匹配任意标点
[[:space:]] 匹配任意空白字符: 空格、制表符、NL、FF、VT、CR
[[:upper:]] 匹配任意大写字符,A-Z

2. 扩展元字符 (egrep, awk)

2.1. 加号元字符 +

其紧挨着的之前的匹配有 1+ 次匹配机会。

2.2. 问号元字符 ?

其紧挨着的之前的匹配有 0~1 次匹配机会。

2.3. 竖线元字符 |

r1|r2 匹配 r1 或 r2

2.4. 括号元字符 ( )

(r1) 匹配子字符串r1(常与 * + ? | 等连用)。

2.5. 范围元字符 { }

与上面的范围元字符类似。

3. 固定元字符 (grep)

3.1. \\< \\>

严格匹配一个词(后面必须直接跟一个空格或标点符号)。

参考:

  • Linux Command Line and shell Scripting Bible, Richard Blum
  • UNIX awk and sed PROGRAMMER'S INTERACTIVE WORKBOOK, Peter Patsis