C#正则表达式搜索

时间:2013-10-31 20:47:37

标签: c# regex

我正在使用正则表达式来搜索某些文本(方程式)。

我可能有类似的东西

  

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

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

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

  1. (A)的全字搜索应返回匹配。
  2. A的全字搜索不应返回匹配。
  3. A的部分字词搜索应返回匹配。
  4. ((的全字搜索应返回匹配项,因为(( testthis ))周围括号的每一侧都有一个空格。
  5. 我已尝试过以下代码以及许多其他组合,例如\\b \\b* \\S* \\W

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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