我有一个字符串,更具体地说它是一段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="...
答案 0 :(得分:2)
虽然一般来说,阅读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
答案 1 :(得分:1)
您可以使用此方法从一个长度中获取值:
String input = @"...<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 match in Regex.Matches(input, @"href\=\""(.*?\.mp3)"))
{
String yourvalue = match.Value;
}
代替yourvalue
,您需要使用提取的值放置代码。
答案 2 :(得分:1)
考虑以下代码片段来提取mp3文件名...
var matches = Regex.Matches(inputMessage, @"(?<=\"")[\w\s\d/%]*?\.mp3");
祝你好运!