2011-04-10 39 views
53

我想要替換字符串中的所有超過2個空格,但不是新行,我有這個正則表達式:\s{2,}但它也匹配新行。正則表達式匹配超過2個空格但不是新行

如何匹配2個或更多個空格而不是新行?

我正在使用c#

+0

@nihcap - 實際上,C#沒有自己的正則表達式,它是.Net公共庫的一部分。在這種情況下,.Net和C#都是有用的標籤。 – Kobi 2011-04-10 08:55:22

回答

101

將要匹配的空白字符放在字符類中。例如:

[ \t]{2,} 

匹配2個或多個空格或製表符。

你也可以這樣做:

[^\S\r\n]{2,} 

它匹配除了\r\n任何空白字符至少兩次(注意,\S資本S是短期的[^\s])。

+0

你最後一句中的「short for」是什麼意思?沒有這種簡寫,整個正則表達式會是什麼樣子? – 2015-10-16 07:54:00

+1

@LonnieBest在正則表達式中,對於諸如\ w的轉義序列,通常約定大寫轉義序列是小寫轉義序列的反轉字符集。例如。 \ d是\ D的反函數,\ s是\ S的反函數,\ w是\ W的反函數等。而且,在由[] [例如[abc]]分隔的字符類集內,可以指定一個逆使用[^ abc]。因此,\ S等同於[^ \ s],如果允許,它也相當於不允許的符號[^^ \ S]。 (^^不是表示逆的逆的有效方式。) – 2016-03-19 03:56:35

+0

@DejayClayton謝謝,我不知道。 – 2016-03-23 16:42:47

相關問題