C#正则表达式匹配但不匹配Regexr.com

yyyllmsg  于 2023-05-08  发布在  C#
关注(0)|答案(2)|浏览(168)

也许我在这里做错了什么,但对我来说似乎很奇怪,当我试图将字符串“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);
}

先谢谢你了!

pqwbnv8z

pqwbnv8z1#

它是匹配的,因为你有一个星号在那里。
星号表示:
匹配前面的字符零次或多次
所以它根本不匹配\b,但仍然满足上述条件。
删除它,它不再匹配:

string regex = "\\b" + "ct" + "\\b";
qf9go6mv

qf9go6mv2#

C#可能将\b*解释为0或更多个单词边界。
由于这是一个奇怪的定义,也许regexr不允许这个结构,并将其视为\b。例如,如果它使用不同的正则表达式后端并转换为C#,则可能会出现这种情况。
你确定你的意思不是\b.*ct\b,这是一个单词边界,后面跟着任意数量的字符,后面跟着ct和另一个单词边界?

相关问题