第3章 查找与替换——(POSIX)ERE正则表达式

1.关于反斜杠:ERE中,\无论在哪,都表示转义,要表示\,需使用\\
2.ERE中没有后向引用
3.区间表达式:{} 与BRE的区别是没有反斜杠。
注意:如果{没有匹配的},则定义为”未定义状态“
4.? 匹配0个或1个前置正则表达式
5.+ 匹配1个或多个前置正则表达式
6.交替运算符(管道运算符)| :方括号表达式可以表示”匹配这个字符,或是那个字符……“,而交替运算符可以表示”匹配这个序列,或是那个序列,或是……“。
例如:read|write|see匹配read或write或see。|在ERE中优先级最低。
7.分组()
ERE运算符被应用到”前置正则表达式“。()运算符正是提供了”前置“的范围。
例如:(why)+ 匹配一个或连续的多个why
((read|write)[[:space:]]*)+ 匹配多个(包括一个)连续出现的read或write,且中间可能被空白隔开。
8.注意^abcd|efgh$和^(abcd|efgh)$的不同
前者:匹配起始处为abcd或结尾处为efgh的字符串行
后者:匹配正是abcd或正是efgh的字符串行
原因:|的优先级最低
9.ERE运算符的优先级

10.额外的GNU正则表达式运算符

11.unix程序及其正则表达式类型

12.grep默认使用BRE,加上-E选项则使用ERE。
13.通常,awk在其ERE中不支持区间表达式,为了可移植性,应当使用反斜杠转义{}。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>