【发布时间】:2016-02-11 11:04:01
【问题描述】:
我解析 html(在 c# 代码中作为字符串)并且需要从 html 中获取所有短语。例如html:
<div><div>text1</div>text2</div>
我想获取字符串数组:
文本1
文本2
如果正则表达式不可能,请提供算法如何跳过所有标签名称,标签属性,只获取文本内容。
更新:这不是跨度问题的重复,因为文本可以在任何标签中,而不仅仅是跨度。我需要所有文本,除了标签和属性。不想使用 HtmlAgility 解析器。
Update2:找到正则表达式(是的,有可能)
//parse html, save text node in list
public void FindTextHtml(string html, List<string> list)
{
var ms = Regex.Matches(html, @">([^<>]*)<", RegexOptions.IgnoreCase | RegexOptions.Multiline);
foreach (Match m in ms)
{
var text = m.Groups[1].Value;
list.Add(text);
}
}
提供完整源代码here
【问题讨论】:
-
听起来像XY problem?
-
您正试图用螺丝刀敲入钉子。如果需要解析 HTML,请使用 HTML 解析器。
-
我认为这是一个非常简单的问题,大多数开发人员都知道如何解决。我可以自己解决它,但想节省我的时间。感谢理解。
-
见下面的答案:不需要解析器。只是正则表达式。
-
您可以使用原始问题中的解决方案并获取数组,只需使用
\r\n拆分并修剪所有数组元素。您不应为此任务使用正则表达式。