帮助正则表达式。需要提取`

时间:2011-04-20 07:48:10

标签: c# .net regex

我有<A HREF="f110111.ZIP">f110111 - 是一个任意的char序列。 我需要C#正则表达式匹配表达式来提取以上所有内容。

电子。 G。输入是

<A HREF="f110111.ZIP"><A HREF="qqq.ZIP"><A HREF="gygu.ZIP">

我想要清单:

  • f110111.ZIP
  • qqq.ZIP
  • gygu.ZIP

5 个答案:

答案 0 :(得分:3)

您需要的是htmlagility pack/!这将允许您以简单的方式阅读HTML并提供一种简单的方法来检索链接。

答案 1 :(得分:2)

如果文件名中可以​​有多个点:

<A HREF="(^["]+?).zip

如果文件名中没有点(只有zip之前的点),你可以使用更快的点:

<A HREF="(^[".]+)

C#示例:

Pattern pattern = Pattern.compile("<A HREF=\"(^[\"]+?).zip");

Matcher matcher = pattern.matcher(buffer);
while (matcher.find()) {
    // do something with: matcher.group(1)
}

答案 2 :(得分:0)

不,不! Do not use Regex to parse HTML!

尝试使用XML Parser。或者也许是XPath

答案 3 :(得分:0)

试试这个:

/<a href="([^">]+.ZIP)/gi

答案 4 :(得分:0)

我认为正则表达式是一种从给定文本中过滤文本的好方法。

此正则表达式从给定文本中获取文件,文件名和扩展名。

href="(?<File>(?<Filename>.*?)(?<Ext>\.\w{1,3}))"

上面的正则表达式要求在字符字符a-z A-Z 0-9之外存在一个1到3个字符之间的扩展名。

C#代码示例:

string regex = "href=\"(?<File>(?<Filename>.*?)(?<Ext>\\.\\w{1,3}))\"";
RegexOptions options = ((RegexOptions.IgnorePatternWhitespace | RegexOptions.Multiline) | RegexOptions.IgnoreCase);
Regex reg = new Regex(regex, options);