基本正则表达式(Basic Regular Expressions, BRE)

在不同的正则表达式实现中,对反斜杠(\)的解释有所不同。例如:

  • egrepperl 不加反斜杠的 ()| 视为元字符,而加上反斜杠\(\|)表示匹配普通字符
  • 旧版本的 grep 不支持 |(管道替换操作符),因此必须使用 \| 进行替代。

操作符(Operators)

操作符 作用
. 点(.)匹配任意单个字符
[ ] 方括号匹配字符列表字符范围
[^ ] 取反方括号:匹配不在指定字符列表范围内单个字符
* 星号(*)匹配前面的字符 零次或多次
^ 插入符(^)匹配行首
$ 美元符号($)匹配行尾

示例(Examples)

正则表达式 匹配
".at" 任意三个字符的单词,如 hatcatbat
"[hc]at" 仅匹配 hatcat
"[^b]at" 匹配所有符合 ".at" 的单词,但排除 bat
"^[hc]at" 匹配 hatcat,但必须在行首
"[hc]at$" 匹配 hatcat,但必须在行尾

注意事项

字符范围的匹配取决于所使用的区域设置(locale)

  • 某些设置下,字母按 abc..yzABC..YZ 顺序排列。
  • 其他设置下,字母可能按照 aAbBcC..yYzZ 排列,这会影响字符范围的匹配规则。

POSIX 基本正则表达式(BRE)

POSIX grepsedawk 等 Unix 工具提供了额外的扩展,以增强一致性。然而:

  • 这些扩展并未被所有传统的 Unix 工具支持
  • 在某些旧版本的 grepsedawk 中,可能需要使用 \(\) 代替 (),或 使用 \| 代替 |

在哪些工具中使用?

使用**基本正则表达式(BRE)**的工具和编程语言包括:

  • grep(默认使用 BRE,可用 grep -E 启用扩展正则)
  • sed
  • awk
  • 部分 POSIX 兼容工具

尽管基本正则表达式仍然被支持,但推荐使用扩展正则表达式(ERE),以获得更简洁强大的匹配功能(如 grep -Esed -E)。

Last modified: Thursday, 30 January 2025, 2:08 AM