需要一些快速的C#正则表达式帮助

时间:2010-05-20 22:20:01

标签: c# regex

我有这个HTML:

<a href="http://www.site.com/">This is the content.</a>

我只需要摆脱内容文本周围的锚标记html,这样我最终得到的就是“这就是内容”。

我可以使用Regex.Replace吗?

3 个答案:

答案 0 :(得分:2)

你的正则表达式:<a[^>]+?>(.*?)</a>

使用Regex - 类检查此正则表达式并遍历结果集合 你应该得到你的内心文本。

String text = "<a href=\"link.php\">test</a>";

Regex rx = new Regex("<a[^>]+?>(.*?)</a>");
// Find matches.
MatchCollection matches = rx.Matches(text);

// Report the number of matches found.
Console.WriteLine("{0} matches found. \n", matches.Count);

// Report on each match.
foreach (Match match in matches)
{
    Console.WriteLine(match.Value);

    Console.WriteLine("Groups:");
    foreach (var g in match.Groups)
    {
        Console.WriteLine(g.ToString());
    }
}

Console.ReadLine();

输出:

  1 matches found. 
  <a href=\"link.php\">test</a> 
  Groups:
  <a href=\"link.php\">test</a> 
  test

()中的匹配表达式存储在match的{​​{1}}集合的第二项中(第一项是整个匹配本身)。 Groups中的每个表达式都会进入()集合。有关详细信息,请参阅MSDN。

答案 1 :(得分:0)

如果必须使用Replace,这适用于标记内的简单字符串内容:

Regex r = new Regex("<[^>]+>");
string result = r.Replace(@"<a href=""http://www.site.com/"">This is the content.</a>", "");
Console.WriteLine("Result = \"{0}\"", result);
祝你好运

答案 2 :(得分:-1)

您也可以在Regex中使用群组。

例如,以下内容将为您提供任何标记的内容。

      Regex r = new Regex(@"<a.*>(.*)</a>"); 
      // Regex r = new Regex(@"<.*>(.*)</.*>"); or any kind of tag

        var m = r.Match(@"<a href=""http://www.site.com/"">This is the content.</a>");

        string content = m.Groups[1].Value;

您使用括号在正则表达式中使用组,尽管组0是整个匹配,而不仅仅是组。