2015-11-05 29 views
1

我想使用正則表達式從字符串中刪除特殊字符,但前提是字符位於字符串中間。應該保持領先和落後。例如:正則表達式替換除引導和trailiing以外的特殊字符

a + b + c將變爲abc;

a + bc +會變成abc,因爲尾隨的+應該留下。

我有一個正則表達式,將取代所有特殊字符

var newString = Regex.Replace(myString, @"[^\w]", string.Empty) 

我不知道如何跳過第一個和最後一個字符。考慮到字符串長度可以從正則表達式開始,如果沒有正則表達式,我必須總是檢查長度,如果我想子字符串等。這都是可行的,但如果它與一行代碼正則表達式會很好。可能嗎?

+2

您的意思是「a + bc +會變成abc +」嗎? – juharr

+2

「++ abc」怎麼樣?你想保留兩個加號嗎,還是隻有第一個? – juharr

回答

4

您可以提前使用負外觀和錨

(?<!^)[^\w](?!$) 

,將匹配不屬於第一個或最後一個非單詞字符向後看,這意味着它會匹配第二個加「+ + abc「,從而將其轉換爲」+ abc「。

+0

謝謝,這有幫助! – SashaArz