我有这个HTML:
<a href="http://www.site.com/">This is the content.</a>
我只需要摆脱内容文本周围的锚标记html,这样我最终得到的就是“这就是内容”。
我可以使用Regex.Replace吗?
答案 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是整个匹配,而不仅仅是组。