我有一个字符串,更具体地说,它是一段 HTML 源代码,但由于某种原因,我需要的行都写成一行(所以基本上它是一个使用 ReadLine() 的字符串)。现在在那个字符串中我需要提取一个特定的词。
这是一段提取的 html 代码。我需要的是每个 .mp3 文件的 /Qur%27an/Luhaidan/001.mp3
部分,直到 114.mp3。
...<th scope="colgroup"><a href="/Qur%27an/Luhaidan/001.mp3"><img src="...
...<th scope="colgroup"><a href="/Qur%27an/Luhaidan/002.mp3"><img src="...
...<th scope="colgroup"><a href="/Qur%27an/Luhaidan/114.mp3"><img src="...
虽然通常阅读 HTML 的最佳方法是使用 HTML 解析器,但像这样的简单任务可以使用正则表达式来解决。
这样的表达式应该有效:
href="(.*?[.]mp3)"
在循环中搜索此正则表达式,并提取文件名的第一组。
var str = @"
...<th scope=""colgroup""><a href=""/Qur%27an/Luhaidan/001.mp3""><img src=""...
...<th scope=""colgroup""><a href=""/Qur%27an/Luhaidan/002.mp3""><img src=""...
...<th scope=""colgroup""><a href=""/Qur%27an/Luhaidan/114.mp3""><img src=""...
";
foreach (Match m in Regex.Matches(str, "href=\"(.*?[.]mp3)\"")) {
Console.WriteLine(m.Groups[1]);
}
这打印
/Qur%27an/Luhaidan/001.mp3
/Qur%27an/Luhaidan/002.mp3
/Qur%27an/Luhaidan/114.mp3
Demo on ideone.