繁体   English   中英

正则表达式:匹配任何标点字符除外。 和_

[英]Regex: Match any punctuation character except . and _

在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}]之类的标准字符类开始,然后添加一个减法字符类,如 - [._],表示删除。 和_。 减法放在标准类胆量之后的[]内。

到目前为止,答案并不尊重所有标点符号。 这应该工作:

(?![\._])\p{P}

(说明:排除模式,以确保没有.也不_匹配,然后匹配任何Unicode标点字符。)

这有点简单。 不是单词或空格(其中单词包括A-Za-z0-9和下划线)。

[^\w\s.]

您可以使用这样的否定字符类:

[^0-9A-Za-z._\s]

这包括列出的每个字符。 您可能需要排除更多字符(例如控制字符),具体取决于您的最终要求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM