正则表达式(Regular Expressions)
Completion requirements
基本正则表达式(Basic Regular Expressions, BRE)
在不同的正则表达式实现中,对反斜杠(\
)的解释有所不同。例如:
egrep
和perl
将 不加反斜杠的()
和|
视为元字符,而加上反斜杠(\(
和\|
)表示匹配普通字符。- 旧版本的
grep
不支持|
(管道替换操作符),因此必须使用\|
进行替代。
操作符(Operators)
操作符 | 作用 |
---|---|
. |
点(. )匹配任意单个字符 |
[ ] |
方括号匹配字符列表或字符范围 |
[^ ] |
取反方括号:匹配不在指定字符列表或范围内的单个字符 |
* |
星号(* )匹配前面的字符 零次或多次 |
^ |
插入符(^ )匹配行首 |
$ |
美元符号($ )匹配行尾 |
示例(Examples)
正则表达式 | 匹配 |
---|---|
".at" |
任意三个字符的单词,如 hat 、cat 或 bat |
"[hc]at" |
仅匹配 hat 和 cat |
"[^b]at" |
匹配所有符合 ".at" 的单词,但排除 bat |
"^[hc]at" |
匹配 hat 和 cat ,但必须在行首 |
"[hc]at$" |
匹配 hat 和 cat ,但必须在行尾 |
注意事项
字符范围的匹配取决于所使用的区域设置(locale):
- 在某些设置下,字母按
abc..yzABC..YZ
顺序排列。 - 在其他设置下,字母可能按照
aAbBcC..yYzZ
排列,这会影响字符范围的匹配规则。
POSIX 基本正则表达式(BRE)
POSIX 为 grep
、sed
和 awk
等 Unix 工具提供了额外的扩展,以增强一致性。然而:
- 这些扩展并未被所有传统的 Unix 工具支持。
- 在某些旧版本的
grep
、sed
和awk
中,可能需要使用\(
和\)
()
,或 使用 \|
代替 |
。
在哪些工具中使用?
使用**基本正则表达式(BRE)**的工具和编程语言包括:
grep
(默认使用 BRE,可用grep -E
启用扩展正则)sed
awk
- 部分 POSIX 兼容工具
尽管基本正则表达式仍然被支持,但推荐使用扩展正则表达式(ERE),以获得更简洁和强大的匹配功能(如 grep -E
或 sed -E
)。
Last modified: Thursday, 30 January 2025, 2:08 AM