Skip to main content
 首页 » 编程设计

c#之使用正则表达式时出现解析错误

2024年01月24日24zlslch

让我解释一下我面临的实际问题。

当我的 SearchString 是 C+ 时,下面的正则表达式设置工作正常。 但是,当我的搜索字符串是 C++ 时,它会抛出一个错误,指出 --

  parsing "C++" - Nested quantifier +. 

谁能告诉我如何解决这个错误?

RegExp = new Regex(Search_Str.Replace(" ", "|").Trim(), RegexOptions.IgnoreCase); 

请您参考如下方法:

首先,我相信您在当前阶段通过查看一些正则表达式教程而不是在这里询问会学到更多。

为了回答你的问题,我想指出 + 是正则表达式中的量词,表示前一个字符(或组)的 1 倍或更多倍,因此 C+ 会匹配至少 1 个 C,意思是 C 会匹配,CC 会匹配,CCC 会匹配等等。您使用 C+ 的搜索实际上只匹配 C!

正则表达式中的

C++ 会给您一个错误,至少在 C# 中是这样。您不会使用其他正则表达式风格,包括 JGsoft、Java 和 PCRE(++ 在这些风格中是 possessive quantifier)。

那么,怎么办?您需要转义 + 字符,以便您的搜索查找文字 + 字符。一种简单的方法是在 + 之前添加一个反斜杠:\+。另一种方法是将 + 放在方括号中。

这就是说,你可以使用:

C\+\+ 

或者...

C[+][+] 

寻找C++。现在,由于您有两次相同的字符,您可以使用 {n}(其中 n 是出现次数)来表示最后一个字符的出现次数,来源:

C\+{2} 

或者...

C[+]{2} 

应该给出相同的结果。