答案 0 :(得分:1)
.
不是单词字符。 \b
正在检查字边界,即字词和字符之间的边界不被视为字词的一部分。因此,您不能指望.
位于" word" 1.
因为这两个字符没有形成单词。
Quick reference document将\b
描述为:
匹配必须发生在\ w(字母数字)和\ W(非字母数字)字符之间的边界上。
\w
被描述为:
匹配任何单词字符。
如果你检查Word character是什么,你会发现它包括Unicode类 Ll [Letter,Lowercase] ; Lu [Letter,大写] ; Lt [Letter,Titlecase] ; 罗[信,其他] ; Lm [Letter,Modifier] ; Mn [Mark,Nonspacing] ; Nd [数字,小数位] 和 Pc [标点,连接器] 。
但.
有Unicode类 Po [标点符号,其他] ,上面没有列出。
因此,如果您希望\b
与1.
中的字边界匹配,则它位于1
和.
之间。这回答了您的问题为什么。
注意: .NET regex表达式最好在专用于它们的测试站点上进行测试,例如Regex Storm。如果你使用PCRE正则表达式测试你的正则表达式(比如你链接的站点),你可以从.NET得到不同的结果。