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

标签 c# .net regex mono

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/

相关文章:

c# - 具有 AutoSize 的 GroupBox 会切断其部分内容

c# - C#NAudio asio和wasapi

.net - 什么是 .net 技术来取代 Microsoft Transaction Server

ruby - 如何grep数组中与另一个数组中的模式匹配的元素?

c# - 使用 WebBrowser 类时奇怪的弹出行为

c# - 使用 IComparer<string> 对 16 个元素进行排序至少进行 100000 次比较

c# - 如何将作为泛型参数的 Enum 转换为另一个 Enum?

c# - 使用 DSL 生成 C# 代码

r - 如何动态获取关键字周围的单词?

javascript - 使用正则表达式替换字符串中的所有变量