有没有一种简单的方法可以在 C# 正则表达式中匹配除句点和下划线之外的所有标点符号?希望在不列举每一个标点符号的情况下做到这一点。
最佳答案
使用正则表达式减法
[\p{P}-[._]]
这是 .NET Regex 文档的链接(我不确定其他风格是否支持它)... http://msdn.microsoft.com/en-us/library/ms994330.aspx
这是一个 C# 示例
string pattern = @"[\p{P}\p{S}-[._]]"; // added \p{S} to get ^,~ and ` (among others)
string test = @"_""'a:;%^&*~`bc!@#.,?";
MatchCollection mx = Regex.Matches(test, pattern);
foreach (Match m in mx)
{
Console.WriteLine("{0}: {1} {2}", m.Value, m.Index, m.Length);
}
说明 该模式是字符类减法。它以 [\p{P}] 之类的标准字符类开始,然后添加一个减法字符类,例如 -[._] 表示删除 .和 _。减法放在标准类胆量之后的 [ ] 内。
关于c# - 正则表达式:匹配除 . 之外的任何标点符号。和 _,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3973602/