也许我在这里做错了什么,但对我来说似乎很奇怪,当我试图将字符串“radiologic examination eye detect foreign body”与www.example.com上的正则表达式“\b*ct\b”匹配regexr.com,我找不到匹配项,但当我尝试使用C#程序做同样的事情时,它匹配。下面是C#代码。我是不是做错了什么/检查错了什么?
string desc = "radiologic examination eye detect foreign body";
string regex = "\\b" + "*ct" + "\\b";
if (Regex.IsMatch(desc, regex))
{
String x = Regex.Replace(desc, regex, " " + "ct" + " ").Trim();
Console.WriteLine(x);
}
先谢谢你了!
2条答案
按热度按时间pqwbnv8z1#
它是匹配的,因为你有一个星号在那里。
星号表示:
匹配前面的字符零次或多次
所以它根本不匹配
\b
,但仍然满足上述条件。删除它,它不再匹配:
qf9go6mv2#
C#可能将
\b*
解释为0或更多个单词边界。由于这是一个奇怪的定义,也许regexr不允许这个结构,并将其视为
\b
。例如,如果它使用不同的正则表达式后端并转换为C#,则可能会出现这种情况。你确定你的意思不是
\b.*ct\b
,这是一个单词边界,后面跟着任意数量的字符,后面跟着ct和另一个单词边界?