元字符\b是和脱字符^,美元符$相同的锚。它匹配字符边界位置,匹配的长度也是0
有3种不同的位置满足字符边界
字符串中,如果第一个字符是单词字符,那么这个字符之前的位置。
字符串中,如果最后一个字符是单词字符,那么这个字符之后的位置。
字符串中,当两个字符一个是单词字符一个不是单词字符,那么这两个字符之间。
简单的认为:\b允许你执行一个全字匹配查询。比如\bword\b。单词字符指的是可以用来拼成单词的字符。字符不是单词字符就是非单词字符。
所有的正则表达式中,[a-zA-Z0-9_] 都是单词字符,这些字符也匹配\w。
由于数字也可以认为是单词字符,\b4\b可以匹配不在一个大数字中的4.比如它不匹配44 sheets of a4。所以说“\b匹配字母数字序列的前后位置”比说“\b匹配单词的前后位置”更准确。
不是字符边界\B是\b的否定版本。\B 匹配了\b 所不能匹配的。\B匹配了任意两个单词字符之间,或者两个非字符之间的位置。
竖线符号“|”指示在两个或多个项之间进行选择。之前已经解释了字符集匹配单个字符,你也可以使用选择匹配单个正则表达式。
选择表达式是急迫型的此表达式只要一旦查找到有效的匹配,就停止了。在某些场合下,选择顺序也会影响结果。
问号?表示可选。
问号表示前面的字符是可选的,例如colou?r匹配colour 和color
问号表达式也是贪婪的,他总是优先匹配问号的那一部分。比如,字符串 Today is Feb 23rd, 2003中,总是优先匹配 Feb 23rd 而不是匹配 Feb 23
重复匹配*号和+号
*表示重复匹配字符0次或者多次
+表示重复匹配字符1次或者多次
限制重复,正则表达式语法为{min,max}
所以{0,}等效于*, {1,} 等效于 +.
本文转自cnn23711151CTO博客,原文链接: http://blog.51cto.com/cnn237111/739321,如需转载请自行联系原作者