简述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 字符类定义。同时,它们还支持字符类比较操作 "[. .]" 和字符来等效体 "[= =]" 操作,但很少被使用。
浙公网安备 33010602011771号