c#regex,标签之间的文本

时间:2013-12-07 11:41:08

标签: c# regex

我有类似的东西:

{
   Regex regex = new Regex(@"expression here");
   foreach (Match match in regex.Matches(textBoxResponse.Text))
      {
      MessageBox.Show(match.Value.ToString());
      }
}

我应该使用什么表达式来获取此响应中的EXAMPLE?

<a href="spieler.php?uid=xxx">EXAMPLE</a>

4 个答案:

答案 0 :(得分:3)

请考虑使用htmlagilitypack

编辑:

根据Casimir et Hippolyte的建议更新了示例 可以在此处阅读XPATH的快速介绍:http://zvon.org/xxl/XPathTutorial/General/examples.html

以下代码查找页面上的所有超链接。参考:http://htmlagilitypack.codeplex.com/wikipage?title=Examples

var doc = new HtmlDocument(); //HtmlDocument class is part of the htmlagilitypack
doc.LoadHtml(@"<html><body><a href='spieler.php?uid=xxx'>EXAMPLE</a></body></html>");

foreach(var linkText in doc.DocumentNode.SelectNodes("//a/text()"))
{
    Console.WriteLine(linkText.InnerText);
}

答案 1 :(得分:1)

这应该有用,它会查看&gt;之间的文字。和&lt; / a&gt;

 (?<=>)(.*?)(?=</a>)

但正如评论中所述,我不建议用正则表达式解析html

答案 2 :(得分:1)

考虑以下Regex ......

(?<=\>).*?(?=<)

祝你好运!

答案 3 :(得分:0)

var html = @"<a href=""spieler.php?uid=xxx"">EXAMPLE</a>";
var matches = Regex.Matches(html, @"<a\ href=""spieler\.php\?uid=[^""]*"">([^(</a>)]*)</a>");
foreach (Match match in matches)
{
    Console.WriteLine(match.Groups[1].Value);
}

希望有帮助:) 或者如果你想使用Linq。

var html = @"<a href=""spieler.php?uid=xxx"">EXAMPLE</a>";
var matches = Regex.Matches(html, @"<a\ href=""spieler\.php\?uid=[^""]*"">([^(</a>)]*)</a>");
var examples = (from Match match in matches select match.Groups[1].Value).ToList();