c# - 正则表达式:匹配除 . 之外的任何标点符号。和 _

标签 c# .net regex

有没有一种简单的方法可以在 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/

相关文章:

python - 如何使用 re.findall() 使用符号组名

.net - 在 ASP.NET MVC 中使用 HttpContext.Current.Session 测试一个类

c# - 在不知道名称的情况下获取第一列的值

c# - 无法让 App.config 设置持续存在

c# - 如何更改行 MouseOver 上的 GridView 单元格颜色

c# - 在 C# 中将大十进制值舍入到小十进制值

python - 在 python 中用 re.sub 替换单个单词

PHP regex - 计算单词前后感叹号的数量

c# - WCF 服务基址与端点地址

c# - 如何使用 JSON.NET 序列化静态或 const 成员变量?