,修复程序为@"\b((ab)|(['\w]+))\b"这是因为第一个正则表达式匹配
下面的第一个Debug返回'unsbuscred''d,第二个返回unsbuscreb''d。不同之处在于领先。
我想要的是两人都能不受约束地返回。
string textText = " 'unsbuscrib''d' ";
Regex rTest = new Regex(@"b(ab)|(['w]+)b");
if (rTest.IsMatch(textText))
{
Debug.WriteLine(rTest.Match(textText).Value);
}
rTest = new Regex(@"b(['w]+)b");
if (rTest.IsMatch(textText))
{
Debug.WriteLine(rTest.Match(textText).Value);
}
由于Guffa
b(ab)
或(['w]+)b
。
它将在开头包含撇号,因为它使用了第二部分,其中开头不需要单词边界。
第二个正则表达式要求在开头有一个单词边界,并且空格和撇号之间没有单词边界。第一个单词边界位于撇号和字母u
之间。
b
字边界在字母数字字符和非字母数字字符之间匹配,因此它在'
和u
之间匹配,但在<space>
和'
之间不匹配。
您的交替操作将第一个正则表达式分离为
b(ab) | (['w]+)b
也许你的意思是
b(?:(ab)|(['w]+))b