2014-10-18 69 views
0

我越来越熟悉的正则表达式(工作.NET)\ B就锚锚b(.NET)我不明白为什么正则表达式

@"\b\w+\s\w+\b" 

不匹配

"theme them" 

IN

"them theme them them" 

相信空间是非单词字符这样的边界存在于(2),所以它应该是一个匹配两端。

有人能解释我为什么我错了吗?

感谢

回答

0

它不会匹配,因为比赛的重叠子theme them

最初这\b\w+\s\w+\b正则表达式匹配them theme然后它检查符合模式的字符串。那么它匹配them them。它不匹配theme them之间的中间值,因为子字符串theme已经匹配。

您需要使用正向查找顺序来匹配已匹配的字符串。

@"(?=(\b\w+\s\w+\b))" 

DEMO