2012-10-05 40 views
4

我想清理一些數據使用助手exe(C#)。從字符串的開始和結尾刪除非字母數字字符只有

我通過每個迭代串和我想刪除從開始和字符串即端無效字符從$$$helloworld$$$刪除美元符號。

此使用正則表達式正常工作:\W

然而,包含在中間無效的字符串應該被單獨留在家中,即hello$$$$world是好的,我的正則表達式不應該這個特殊的字符串相匹配。

所以在本質上,我試圖找出語法開始和一個字符串的結尾匹配無效字符,但離開它包含在他們的身上無效字符字符串。

感謝您的幫助!

回答

6

這就是了!

(^[\W_]*)|([\W_]*$) 

regex說匹配零個或多個非單詞字符在啓動(^)或(|)末($

+0

完美!謝謝! – Chris

+3

注意雖然:使用'\ W'將忽略下劃線以及字母數字,所以像*「_ helloworld _」*這樣的東西將保持不變。如果這給OP帶來了問題,那麼他們可以使用'[^ ​​\ W_]'而不是普通的'\ W'。 – LukeH

+0

@LukeH不錯的觀察...會編輯 – Anirudha

0

下面應該工作:

^\W+|\W+$ 

^$分別是字符串的開頭和結尾的錨點。中間的|是OR,因此這個正則表達式意思是「在字符串的開頭匹配一個或多個非單詞字符,或匹配字符串末尾的一個或多個非單詞字符」。

0

試試這個,

(^[^\w]*)|([^\w]*$) 
0

使用^匹配「行首」和$匹配「行尾」,即你的代碼應該匹配並刪除^ \ W *和\ W * $

相關問題