Mono 的正则表达式实现有一个错误,这意味着它不能正确处理正则表达式字符类减法。
IE:“[ab-[a]]”实际上应该是字符集“[b]”。
例如,.NET 上的以下代码将输出“The\ncat\nsat\non\nthe\nmat”。
此示例包含我尝试在单声道上使用的简化正则表达式。
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);
但是使用单声道,正则表达式什么都不匹配。
对于如何用不同方式编写的正则表达式获得相同的效果,有没有人有任何建议?
最佳答案
您是否考虑过使用 negative lookahead ?如:
"(?![" + listOfUnicodeChars + "])[\\p{Lu}" + ... + "]"
关于c# - 关于重构正则表达式字符类减法的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9137031/