我一直在嘗試構建正則表達式,但一直未能獲得一個特定的條件。使用空格替換非alpha字符的正則表達式
我想要一個正則表達式來刪除除破折號之外的所有非alpha字符(-
)。只有在前綴爲空格的情況下才應更換虛線。
I.e.
TEST-TEST -TEST#TEST.TEST
應改爲
TEST-TEST TEST TEST TEST
我一直在使用[^a-zA-Z0-9]
,但一直沒能包括一個或條件初始化。
我一直在嘗試構建正則表達式,但一直未能獲得一個特定的條件。使用空格替換非alpha字符的正則表達式
我想要一個正則表達式來刪除除破折號之外的所有非alpha字符(-
)。只有在前綴爲空格的情況下才應更換虛線。
I.e.
TEST-TEST -TEST#TEST.TEST
應改爲
TEST-TEST TEST TEST TEST
我一直在使用[^a-zA-Z0-9]
,但一直沒能包括一個或條件初始化。
這裏是我想出了(\s-|[^A-Za-z0-9-])
...這將刪除所有非字母數字,但保持「 - 」除非有收到了空間「 - 」
測試使用的sed在Linux中,在那一刻我沒有訪問VS或單來測試C#
echo "TEST-TEST -TEST#TEST.TEST -1234" | sed 's/\(\s-\|[^A-Za-z0-9-]\)/ /g'
輸出
TEST-TEST TEST TEST TEST 1234
\s-
[^A-Za-z0-9-]
所有你需要的是瀏覽器http://ideone.com/wYU5D – 2010-11-18 23:05:11
'var regex = new Regex(@「(\ s- | [^ A-Za-z0-9-]));字符串結果= regex.Replace(「TEST-TEST -TEST#TEST.TEST」,「」);' – 2010-11-18 23:06:45
完美的工作。謝謝。 – 2010-11-19 00:35:07
// Skip over '-', grab non-word characters or the ' -' sequence to replace
string pattern = @"(?!-)(\W| -)+";
string replacement = "";
Regex regex = new Regex(pattern);
string result = regex .Replace("Replace - this *@#&@#* string-already", replacement);
的(? - !)是一個零寬度式斷言這將跳過「 - 」符號......如果它前面有一個空格,第二組將與之匹敵。
如果你想替換一個空間,而不是完全刪除字符,只是改變
string replacement = " ";
的模式是貪婪的,所以它會取代非單詞字符組用一個空格。
根據你例子,它看起來像你想保留空間以及? – 2010-11-18 22:24:17
或用空格替換非alpha字符? – 2010-11-18 22:37:32