2011-11-04 84 views

回答

1

这将工作。请注意,我只捕获href内部的任何内容。

resultString = Regex.Replace(subjectString, @"(?<=<a[^>]*?\bhref\s*=\s*(['""]))(.*)(?=\1.*?>)", "$2.html"); 

并将.html附加到它。您可能希望将其更改为您的需求。

编辑:火焰战争开始之前。是的,它会适用于您的具体示例,不适用于互联网中所有可能的html。

1

你不应该用正则表达式解析HTML。详情请参阅 this question的回答。

UPD:正如TrueWill指出的那样,您可能希望使用Html Agility Pack进行替换。但是在某些特殊情况下,FailedDev提出的正则表达式将会执行,不过我会稍微修改它,使其看起来像这样:@"(?<=<a\b[^>]*?\bhref\s*=\s*(['""]))(.*)(?=\1.*?>)"(在<a之后放置\b以排除以“a”开头的其他标记)。

+0

我不想解析HTML,我试图在html文件中进行字符串替换。 – Justin808

+0

一个简单的正则表达式就是'(。*?)'查找零件。 – jCoder

+2

@ Justin808但要正确地做到这一点,实际上你需要解析文档。例如,你可能会想忽略脚本和评论。 – Gebb