【发布时间】:2011-12-22 05:52:36
【问题描述】:
如何替换
<a href="page">Text</a>
与
<a href="page.html">Text</a>
其中page 和Text 可以是任意字符集?
【问题讨论】:
如何替换
<a href="page">Text</a>
与
<a href="page.html">Text</a>
其中page 和Text 可以是任意字符集?
【问题讨论】:
这会奏效。请注意,我只捕获 href 内的任何内容。
resultString = Regex.Replace(subjectString, @"(?<=<a[^>]*?\bhref\s*=\s*(['""]))(.*)(?=\1.*?>)", "$2.html");
并将 .html 附加到它。您可能希望根据需要进行更改。
编辑:在火焰战争开始之前。是的,它适用于您的具体示例,而不适用于互联网上所有可能的 html。
【讨论】:
您不应该使用正则表达式解析 HTML。详情见 this question 的回复。
UPD:正如 TrueWill 所指出的,您可能希望使用 Html Agility Pack 进行替换。但是在某些特殊情况下,FailedDev 提出的正则表达式可以,虽然我会稍微修改它看起来像这样:@"(?<=<a\b[^>]*?\bhref\s*=\s*(['""]))(.*)(?=\1.*?>)"(在<a 之后放置一个\b,以排除其他以“a”开头的标签)。
【讨论】:
<a.*?href="(.*)".*?>(.*?)</a> 来查找零件。