0

我正在使用正则表达式来搜索一些文本(一个等式)。

我可能有这样的东西

(A) (x + 5) (( testthis ))

我可以选择仅搜索整个单词或部分单词。

以下是我想满足的上述示例的一些条件,但似乎不适用于我尝试过的任何选项

  1. 整个单词搜索(A)应该返回一个匹配项。
  2. 整个单词搜索A不应返回匹配项。
  3. 部分单词搜索A应该返回匹配项。
  4. 整个单词搜索((应该返回一个匹配项,因为在括号周围的每一侧都有一个空格(( testthis ))

我已经尝试了下面的代码以及许多其他组合,例如\\b \\b* \\S* \\W.

我基本上想要与 \b 相同的功能,但支持非字母数字字符。

if (bWholeword == true)
{
      matchText = "\\s*" + Regex.Escape(term) + "\\s*";
}
else
{
      matchText = Regex.Escape(term);
}
4

1 回答 1

1
matchText = bWholeword 
             ? (@"(^|(?<=[\b\W|_]))" + term + @"($|(?=[\b\W|_]))") 
             : term;

(^|(?<=[\b\W|_]))匹配字符串的开头,或任何非字母数字(虽然只抓住这个词)。最后也是一样。

当您的术语(或类似术语时,这会变得很棘手。它将在每个上匹配一次,(因为它们都是完整的单词,围绕非字母数字字符。

于 2013-10-31T20:53:02.950 回答