NeverSayGoodbye
2015-11-27 23:26
什么是零宽单词边界??
四、 /b应用场景
4.1 基础应用
“/b”一般应用在需要匹配某一单词字符组成的子串,但这一字符不能包含在同样由单词字符组成的更长的子串中。
比如要替换掉一段英文中的单词“to”,而“today”显然不在替换的范围内,所以正则可以用“/bto/b”来限定。
用得比较多的场景是在HTML标签的匹配中,用以区分相互包含的标签,比如要过滤掉<b>、</b>、<p…>、<img…>等标签,但要保留<br />标签,正则可以写成“<(/?b|p|img)/b
[^>]*>”。
举例:统计以“,”分割的元素中“3”的个数
string test = "137,1,33,4,3,6,21,3,35,93,2,98";
int count = Regex.Matches(test, @"/b3/b").Count; //结果:2
4.2特殊情况
“/b”用在正则中,通常情况下都是表示单词边界的,只有在字符组中,它表示的是退格键,即 [a-z/b] 此处的“/b”表示的是退格键,而不是单词边界。
“/b”匹配的只是一个位置,这个位置的一侧是构成单词的字符,另一侧为非单词字符、字符串的开始或结束位置。“/b”是零宽度的。
其实,说白了,就是单词的两侧啦
请看下面例子:
这是一个字符串:hello this is a test!
然后我们把正侧表达式\b 替换为_
得到结果如下:_hello_ _this_ _is_ _a_ _test_!
上面所有的_的位置都是原来的\b,这下明白了吧。^.^
JavaScript深入浅出
281100 学习 · 1020 问题
相似问题