繁体   English   中英

C#正则表达式,标签之间的文本

[英]c# regex, text between tags

我有这样的事情:

{
   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>

考虑为此使用htmlagilitypack

编辑:

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

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

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);
}

这应该可行,它将查看>和</ a>之间的文本

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

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

考虑以下正则表达式...

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

祝好运!

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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM