我正在使用以下正则表达式:
(<(table|h[1-6])[^>]*>(?<op>.+?)<\/(table|h[1-6])>)
从 html 文档中提取表格(和标题)。
我发现它在我们使用的文档中工作得很好(用 word 转换的文档另存为过滤后的 html),但是我有一个问题,如果表中包含一个表,则正则表达式将匹配初始表开始标记和第二个表格结束标记,而不是初始表格结束标记。
正则表达式中是否有一种方法可以指定如果它在匹配项中找到另一个表标记以继续忽略下一个匹配项并转到下一个匹配项等等?
请您参考如下方法:
不要这样做。
HTML 不是正则语法,因此正则表达式不是解析它的好工具。您在最后一句话中要求的是上下文解析器,而不是正则表达式。纯粹的正则表达式解析很可能无法正确解析 HTML 以负责编码。
HtmlAgilityPack是我过去使用过的 MsPL 许可解决方案,它具有广泛接受的许可条款并提供格式良好的 DOM,可以使用 XPath 进行探测或以其他有用的方式进行操作(“提取所有文本,删除标签”是例如,用于导入用于搜索的 HTML 邮件的流行方法,在让 DOM 解析器分析 HTML 并仅编码为您的特定业务案例增加值(value)的部分之后,这几乎是微不足道的)。
