如何使用C#在<strong>标签之间提取字符串?

Baz*_*nga 11 c# regex

说我有一个如下所示的字符串:

"Unneeded text <strong>Needed Text</strong> More unneeded text"
Run Code Online (Sandbox Code Playgroud)

我怎样才能只提取" 需要的文字 "?我猜Regex可能是最简单的方法,但Regex对我来说仍然看起来像象形文字.

Ann*_*a.P 21

Regex regex = new Regex("<strong>(.*)</strong>");
  var v = regex.Match("Unneeded text <strong>Needed Text</strong> More unneeded text");
  string s = v.Groups[1].ToString();
Run Code Online (Sandbox Code Playgroud)

  • 请注意,给定字符串""不需要的文本<strong>需要的文本</ strong>不太有用<strong>更有用</ strong>"`,它也会捕获"不太有用".我建议`(.*?)`. (5认同)
  • 澄清一下,"?" 之后.*会使它"懒惰",这意味着它会在下一次匹配后立即停止. (2认同)

Son*_*nül 11

你不需要正则表达式.

你可以使用String.SubStringString.Split方法一样;

string s = "Unneeded text <strong>Needed Text</strong> More unneeded text";
Console.WriteLine(s.Substring(s.IndexOf("<strong>") + "<strong>".Length, s.IndexOf("</strong>") - s.IndexOf("<strong>") - "<strong>".Length));
Run Code Online (Sandbox Code Playgroud)

输出将是;

Needed Text
Run Code Online (Sandbox Code Playgroud)

这是一个DEMO.


dev*_*tal 8

看看HTML Agility PackAngleSharp

  • 我熟悉HTML Agility Pack,但此方法仅用于应用程序中的一个位置.我想避免过多地增加尺寸. (2认同)

DGi*_*bbs 5

使用HTMLAgilityPack可以让您省去麻烦。像这样的事情应该这样做:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml("html...");

var innerText = doc.DocumentNode.Descendants("strong").Select(x => x.InnerText).SingleOrDefault(); 
Run Code Online (Sandbox Code Playgroud)