簡體   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