非 POSIX 基本正则表达式(Non-POSIX Basic Regular Expressions, BRE)

除了 POSIX 规定的基本正则表达式(BRE)之外,一些工具还支持额外的非 POSIX 字符类和语法扩展。这些扩展主要用于增强正则表达式的适用性,特别是在编程语言中对标识符的处理。


新增的字符类

  1. [:word:]
    • 该字符类通常被定义为 [:alnum:](字母 + 数字)再加上 _(下划线)
    • 主要用于匹配编程语言中的标识符
    • 例如:
      • [[:word:]]+ 可匹配 hello, var_name, Python3

常见运算符

运算符 作用
. 匹配任意单个字符
[ ] 字符类,匹配方括号内的任意字符
[^ ] 反向字符类,匹配不在方括号内的字符
* 匹配前一个字符 0 次或多次
^ 匹配行首
$ 匹配行尾

Vim 编辑器的额外扩展

在 Vim 中,正则表达式还区分了单词(word)和单词开头字符(word-head):

  • \w 匹配单词字符(类似 [:word:]
  • \h 匹配单词开头字符(仅匹配字母和 _,不能匹配数字)

在许多编程语言中,变量名必须以字母或 _ 开头,不能以数字开头。因此 \h 用于匹配合法的标识符开头字符


适用工具

支持非 POSIX 扩展的工具和编程语言包括:

  • Vim
  • 某些增强版 grepsed
  • 某些编程语言的正则引擎

总结

  1. 非 POSIX 主要新增了 [:word:],用于匹配 字母 + 数字 + _,适用于编程语言中的变量名
  2. Vim 进一步扩展了 \w(单词字符)和 \h(标识符开头字符)
  3. 这些扩展并不属于 POSIX 标准,但在一些工具中提供了额外的功能

这些扩展增强了正则表达式的表达能力,特别是在处理编程语言代码时更加方便。

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