.net 或者改变单词边界的行为
在下面,第一个调试返回“unsbuscribe”d,第二个返回unsbuscribe”d。区别在于“领先” 我想要的是两个都不加删减地返回 修复是“\b((ab)|(['\w]+)\b”,这要归功于GuffaA.net 或者改变单词边界的行为,.net,regex,c#-4.0,.net,Regex,C# 4.0,在下面,第一个调试返回“unsbuscribe”d,第二个返回unsbuscribe”d。区别在于“领先” 我想要的是两个都不加删减地返回 修复是“\b((ab)|(['\w]+)\b”,这要归功于GuffaA\b在字母数字字符和非数字字符之间的匹配,因此它在和u之间匹配,但在和之间不匹配 你的交替将第一个正则表达式分成 \b(ab) | (['\w]+)\b 也许你的意思是 \b(?:(ab)|(['\w]+))\b 这是因为第一个正则表达式匹配\b(ab)或(['\w]+)\b
\b
在字母数字字符和非数字字符之间的匹配,因此它在
和u
之间匹配,但在
和
之间不匹配
你的交替将第一个正则表达式分成
\b(ab) | (['\w]+)\b
也许你的意思是
\b(?:(ab)|(['\w]+))\b
这是因为第一个正则表达式匹配
\b(ab)
或(['\w]+)\b
它将包括在开头的撇号,因为它使用的是第二部分,其中在开头没有单词边界的要求
第二个正则表达式要求在开头有一个单词边界,空格和撇号之间没有单词边界。第一个单词边界位于撇号和字母u
之间
\b(?:(ab)|(['\w]+))\b