2013-11-15 40 views
1

我在嘗試刪除兩個字符之間的文本時遇到問題。 我想刪除=,之間的所有文本。這裏是我試圖應用這個示例代碼。刪除兩個字符之間的字符

"Y = Yellow, W = White, B = Blue, R = Black Out" 

我想要做的就是對上面的這個改變。

"Y W B R" 

或此,但上述是優選的。

"Y W B R = Black Out" 

這是我想要的。

 string input = "Y = Yellow, W = White, B = Blue, R = Black Out"; 
     string regex = "(\\=.*\\,)"; 
     string output = Regex.Replace(input, regex, ""); 

以下是獲得展示

"Y R = Black Out" 

我知道我做錯了什麼。這是我第一次使用正則表達式。

回答

4

問題是*是貪婪的正則表達式。因此,抓取從第一個,到最後一個=的所有內容。使用*?使用非貪婪匹配:

string regex = "=.*?,"; 

爲了擺脫過去的價值,你可以這樣做:

string regex = "=.*?(,|$)"; 
+0

可以得到這個結果。 「Y W B R =黑色外面」有什麼辦法可以得到這個結果「Y W B R」? – deathismyfriend

+0

是的,你可以做'string regex =「(\\ =。*?\\(,| $))」;'來匹配逗號或字符串的結尾。 – Jacob

+0

此外,您還有更多的轉義和括號。查看我的更新。 – Jacob

4

沒有必要使用正則表達式:

string result = string.Join(" ", input.Split(',') 
           .Select(p => p.Split('=')[0].Trim())); 
+0

這也適用。哪一個更好用?也很抱歉,但我必須將雅各布答案標記爲解決此問題的答案。他首先回答。 – deathismyfriend