2011-06-13 21 views
0

我有以下情形:正則表達式 - 數字字符串的更換部分

string source1 "ABC?XYZ"; 
string source2 "DEF?PQR"; 
string replacement = "123" 
string result = Regex.Replace(source1, @"([A-Z]{3,})(\?+)([A-Z]{3,})", "$1" + replacement + "$3"); 

問題是當然,替換字符串擴展爲「S1123 $ 3」,因爲它試圖找到$ 1123其迷惑解析器。

誰能告訴我如何從替換字符串分隔元素?

謝謝。

回答

1

的問題是,如果您連接"$1" + replacement + "$3",它給 「$ 1123 $ 3」。正則表達式解析器將嘗試替換第1123個捕獲組,因此它不會執行任何操作。

如果PHP的約定是在語言,你的代碼(見here)有效,你可以完成你想要的改變$n更換引用${n},像這樣:

string result = 
    Regex.Replace(source1, @"([A-Z]{3,})(\?+)([A-Z]{3,})", 
       "${1}" + replacement + "${3}"); 
+0

我使用C# - $ {n}語法工作正常 - 謝謝 – Neilski 2011-06-13 13:44:04

1

使用${n}代替$n,即${1}${3}在你的榜樣:

string result = Regex.Replace(source1, @"([A-Z]{3,})(\?+)([A-Z]{3,})", "${1}" + replacement + "${3}");