string input = "Hello World!";
string pattern = "(World|Universe)";
string replacement = "$1";
string result = Regex.Replace(input, pattern, replacement);
具有下面的例子處理的正則表達式逃逸替換文本,結果將是"Hello World!"
,作爲$1
得到與第一組(World|Universe)
取代,但是結果我想是"Hello $1!"
包含美元字符
的Regex.Escape
方法用於轉義正則表達式模式,而不是替換,因爲它可以轉義其他字符,如斜線和其他正則表達式模式字符。我的問題明顯的解決辦法是讓我的替換等於"$$1"
,並將達到"Hello $1!"
,但我想知道美元符號是唯一值我必須逃脫(假設replacement
是用戶生成的,我不知道它前面的時間),還是有一個幫助功能已經這樣做了。
有誰知道一個函數來逃避Regex.Replace(string input, string pattern, string replacement)
使用的重置值?
同樣來自MSDN:替換是在替換模式中識別的唯一正則表達式語言元素。所有其他正則表達式語言元素(包括字符轉義符)只能在正則表達式模式中使用,並且不會在替換模式中識別。 – Gebb 2012-04-09 19:10:05
這對我來說看起來不錯,我懷疑做了一個啞巴ol替換。替換(「$」,「$$」)'應該是100%的時間嗎? – Matthew 2012-04-09 19:18:11
是的,'replacement.Replace(「$」,「$$」)'應該是你需要的。 – dtb 2012-04-09 19:19:25