说我有一个正则表达式编译对象: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