查找具有正则表达式的任何文字

Aag*_*nor 0 c# regex

在我的C#程序中,我有一个正则表达式textparser,它可以找到所有出现的双方括号括起来的单词.例如,[[anything]]会找到任何单词.

在第二步中,我想计算在整个文本中出现的单词(在我的例子中:任何东西)出现的频率.为此,我尝试创建一个包含找到的单词和计数的RE,我得到了多少匹配.问题是,找到的单词还可以包含特殊字符和以下正则表达式:

string foundWord = "(anything";
Regex countOccurences = new Regex(foundWord);
Run Code Online (Sandbox Code Playgroud)

当变量包含'(''等特殊字符时,显然会失败.Express建议匹配整个表达式以下构造:

Regex countOccurences = new Regex("(?(" + foundWord + ")Yes|No)");
Run Code Online (Sandbox Code Playgroud)

但是当在这种情况下,findWord是一个数字,比如'2009',RE试图将其解释为对一个组的引用(显然没有定义).在我的文中,可以有普通字符,特殊字符,数字等的任意组合.

如何告诉RE仅将给定字符串解释为文字表达式?

先谢谢你,弗兰克

Edd*_*van 6

您应该使用Regex.Escape在使用它构建正则表达式之前转义文字

就像是:

Regex countOccurances = new Regex(Regex.Escape(foundWord));
Run Code Online (Sandbox Code Playgroud)

但是,由于您所做的只是计算出现次数,因此更好的选择是避免使用正则表达式进行第二次搜索.由于您不关心任何特殊字符,因此只进行纯文本搜索会更容易.