简述BRE和ERE

BRE 定义的语法符号包括:

. 匹配任意一个字符
[] 字符集匹配,匹配方括号中定义的字符集之一
[^] 字符集否定匹配,匹配没有在方括号中定义的字符
^ 匹配开始位置
$ 匹配结束位置
\(\) 定义子表达式
\n 子表达式向前引用,n 为 1-9 之间的数字。 由于此功能已超出正则语义,需要在字符串中回溯,因此需要使用 NFA 算法进行匹配
* 任意次匹配(零次或多次匹配)
\{m,n\} 至少 m 次,至多 n 次匹配;\{m\} 表示 m 次精确匹配;\{m,\} 表示至少 m 次匹配

 

 

 

 

 

 

 

  

 

ERE增加:

? 最多一次匹配(零次或一次匹配)
+ 至少一次匹配(一次或更多次匹配)
| 或运算,其左右操作数均可以为一个子表达式

 

 

 

ERE删除:
非正则语义的子表达式向前引用能力。

ERE修改:
ERE 取消了子表达式 "()" 和 次数匹配 "{m,n}" 语法符号的转义符引用语法,在使用这两种语法符号时,不在需要添加转义符。

BRE 和 ERE 共享同样的 POSIX 字符类定义。同时,它们还支持字符类比较操作 "[. .]" 和字符来等效体 "[= =]" 操作,但很少被使用。

posted @ 2013-01-09 13:12  signorino 13  阅读(479)  评论(0)    收藏  举报