說我有一個正則表達式編譯對象:Regex.Replace和字符串不變性
public static Regex myRgx = new Regex(@"[\d]+",RegexOptions.Compiled);
現在讓我們說我讀大串入字符串變量SS,然後我用我的正則表達式對象,以取代所有比賽該字符串中
myRgx.Replace(SS,"($&)");
問:是否.Replace內部使用StringBuilder做的工作,就像在String.ReplaceAll會發生什麼()?
如果它不是有辦法解決這個問題?
更新:
我不知道是否可以問另一個問題作爲原始問題的更新..如果它不正確,請隨時編輯它。
問題2:如果我需要更換瓶坯的鏈條,使用多個regex對象,如:
string input = "Some LARGE string";
input = rgx1.Replace(input,"substitution1");
input = rgx2.Replace(input,"substitution2");
input = rgx3.Replace(input,"substitution3");
我正在寫一個形態分析,所以regex對象必須保持獨立,而需要按照上面的代碼以某種順序進行替換。正則表達式對象的數量很大,我們正在談論千兆字節的文本,所以每當一個正則表達式對象被替換時傳遞一個新的字符串對象,在這裏不是一個真正的選擇。
有何建議?
它必須是一個相當枯燥的大字符串,擔心良好使用的框架函數的內部性能影響。 – Reddog 2011-04-19 18:13:56