我正在使用正则表达式来搜索某些文本(方程式)。
我可能有类似的东西
(A)(x + 5)((testthis))
我可以选择仅搜索整个单词或搜索部分单词。
以上是我想见的上述示例的一些条件,但似乎不适用于我尝试过的任何选项
(A)
的全字搜索应返回匹配。A
的全字搜索不应返回匹配。A
的部分字词搜索应返回匹配。((
的全字搜索应返回匹配项,因为(( testthis ))
周围括号的每一侧都有一个空格。我已尝试过以下代码以及许多其他组合,例如\\b \\b* \\S* \\W
。
我基本上想要与\ b相同的功能,但支持非字母数字字符。
if (bWholeword == true)
{
matchText = "\\s*" + Regex.Escape(term) + "\\s*";
}
else
{
matchText = Regex.Escape(term);
}
答案 0 :(得分:1)
matchText = bWholeword
? (@"(^|(?<=[\b\W|_]))" + term + @"($|(?=[\b\W|_]))")
: term;
(^|(?<=[\b\W|_]))
匹配字符串的开头或任何非字母数字(虽然只抓住术语)。最后也一样。
当您的学期为(
或类似时,这会变得棘手。它会在每个(
上匹配一次,因为它们都是整个单词,围绕非字母数字字符。