关于重构正则表达式字符类减法的建议

时间:2012-02-03 23:51:56

标签: c# .net regex mono

Mono的正则表达式实现有一个错误,这意味着它无法正确处理正则表达式字符类减法。

IE:" [ab- [a]]"实际上应该是字符集" [b]"。

例如,.NET上的以下代码将输出" \ n \ n \ n \ n \ n \ n \ \ n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 这个例子包含我试图在单声道上工作的简化正则表达式。

string listOfUnicodeChars = "\u2e80";  
string patten =  
"[\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lo}‌‍\\p{Mn}\\p{Mc}\\p{Lm}-[" + listofUnicodeChars +"]]+";

Regex regex = new Regex(pattern);
foreach (var match in regex.Matches("The cat sat on the mat."))
   Console.WriteLine(match);

但使用单声道正则表达式不匹配。

有没有人对如何以不同的方式使用正则表达式产生相同的影响有任何建议?

1 个答案:

答案 0 :(得分:4)

您是否考虑过使用negative lookahead?如:

"(?![" + listOfUnicodeChars + "])[\\p{Lu}" + ... + "]"