【发布时间】:2009-09-18 23:09:45
【问题描述】:
我制作了一个应用程序,旨在使用正则表达式列表准备要翻译的文件。
它使用 Regex.Replace 在文件上运行每个正则表达式。还有一个检查器模块,允许用户查看列表中每个正则表达式的匹配项。
它运行良好,除非正则表达式包含反向引用,Regex.Replace 不会替换任何内容,但检查器会正确显示匹配项(所以我知道正则表达式是有效的并且匹配它应该匹配的内容)。
sSrcRtf = Regex.Replace(sSrcRtf, sTag, sTaggedTag,
RegexOptions.Compiled | RegexOptions.Singleline);
sSrcRtf 包含页面的 RTF 代码。 sTag 包含括号之间的正则表达式。 sTaggedTag 包含由标签格式代码包围的 $1。
举个例子:
sSrcRtf = Regex.Replace("the little dog", "((e).*?\1)", "$1",
RegexOptions.Compiled | RegexOptions.Singleline);
不起作用。但是
sSrcRtf = Regex.Replace("the little dog", "((e).*?e)", "$1",
RegexOptions.Compiled | RegexOptions.Singleline);
确实如此。 (当然,1美元左右还有一些RTF代码)
知道这是为什么吗?
【问题讨论】: