3.2.4 正则表达式的扩展

    很多程序提供正则表达式语法扩展。这类扩展大多采取反斜杠加一个字符,以形成新的运算符。类似 POSIX BRE 里 \(   \)  与  \{  \} 的反斜杠。
 
    最常见的扩展为 \< 与 \> 运算符,分别匹配 “单词 word”的开头与结尾。单词是由字母、数字、及下划线组成的。我们称这类字符为单词组成。
 
    单词的开头要么出现在行的起始处,要么出现在第一个后面紧跟一个非单词组成字符的单词组成字符。同样的,单词的结尾要么出现在一行的结尾处,要么出现在一个非单词组成字符之前的而最后一个单词组成字符。
 
    实际上,单词的匹配其实相当直接易懂。正则表达式 \<chop 匹配于 use chopticks ,但 eat a lambchop 则不匹配;同样地,shop\> 则匹配于第二个字符串,第一个则不匹配。需要特别注意的一点是:在 \<shop\> 的表达式下,两个字符串都不匹配。
 
     虽然 POSIX 标准化的只有 ex 编辑器,但在所有商用 UNIX 系统上,ed、ex 以及 vi 编辑器都支持单词匹配,而且几乎已是标准配备。 GNU/Linux 与 BSD 系统上附带的克隆程序也支持单词匹配,还有 emacs、vim 与 vile 也是。除此之外,通常 grep 与 sed 也会支持。
 
    额外的 GNU 正则表达式运算符
 
运算符 含义
\w 匹配任何单词组成字符,等同于[[:alnum:]_]
\W 匹配任何非单词组成字符,等同于[^[:alnum:]_]
\<   \> 匹配单词的起始与结尾
\b 匹配单词的起始或结尾处所找到的空字符串,这是\<与\>的结合
\B 匹配两个单词组成字符之间的空字符串
\'   \` 分别匹配 emacs 缓冲区的开始与结尾。GNU程序通常将它们视为与^及$同义
    
    虽然 POSIX 明白表示了 NUL 字符无须是可匹配的,但 GNU 程序则无须此限制。若 NUL 字符出现在输入数据里,则它可以通过 . mata 字符或方括号表达式来匹配。
 
 

\b代表字与字中间那个看不见的东西,如
 
here is a word
那么,这句中有好几个\b, 每个单词的前后都有一个\b.
 
所以你用 \bhere\b 可以匹配上面这个here,但如果here 不是一个单词,而是一个单词的一部分,如 adheread, 这样的话,用here 可以匹配,用\bhere\b就不能区配了,因为ad后面没有\b. 所以 adhere 中的here 不会被匹配。
 
总结: \b 就是用在你匹配整个单词的时候。 如果不是整个单词就不匹配。 你想匹配 I 的话,你知道,很多单词里都有I的,但我只想匹配I,就是“我”,这个时候用 \bI\b
 
\B就是反过来,代表非字间。 类似\d代表数字, \D代表非数字。
 

猜你喜欢

转载自www.cnblogs.com/avention/p/10307143.html
今日推荐