我正在嘗試做一個選擇性替換,因此替換字符串中的所有內容,但不是[&]之間的字符。
例如,如果輸入的字符串是「yyyy [m] mm」,我想將所有的m替換爲大寫(除[&]之間的那些),結果應該是yyyy [m] MM。C#正則表達式選擇性替換
任何想法?
謝謝。
我正在嘗試做一個選擇性替換,因此替換字符串中的所有內容,但不是[&]之間的字符。
例如,如果輸入的字符串是「yyyy [m] mm」,我想將所有的m替換爲大寫(除[&]之間的那些),結果應該是yyyy [m] MM。C#正則表達式選擇性替換
任何想法?
謝謝。
這將做到這一點,至少在你的例子。它使用negative lookbehind and a negative lookahead僅匹配未包圍括號的m
。它將與[mm]
但不[mmm]
或[mmdd]
。
Regex.Replace("yyyy[m]mm", @"(?<!\[)m(?!\])", "M")
感謝Tim S.工作。這是我最終寫的例程:'''公共字符串ReplaceSelective(字符串數據,字符串sourceString,字符串destString)''''{string pattern = @「(?<!\ [)」+ sourceString + @「(? !\])「;正則表達式rgx = new Regex(pattern);返回(rgx.Replace(data,destString)); }''' – Zamir 2013-04-27 01:23:13
使用反引號來內聯格式化代碼。 http://daringfireball.net/projects/markdown/syntax – 2013-04-27 01:25:09
你可能想逃避你的'sourceString',像這樣:'Regex.Escape(sourceString)'。這樣,如果源字符串是'test.',它仍然可以正常工作並且不匹配'「testy」'。 – 2013-04-27 01:29:57
你能給例子預期的輸入和輸出嗎? – 2013-04-27 00:51:36