0

我的任务是迁移您将遇到的最糟糕的 HTML 产品描述。它由表格和段落的混合组成。大多数甚至不是 100% 有效的 HTML,并且有很多 Microsoft 标签由 MS Word 提供。它充满了线条样式标签,其中大部分依赖于您将见过的最疯狂的 CSS 规则集。

基本上我已经意识到唯一有用的是文本段落。我不能只抓住<p>标签,因为有时段落不使用它们,有时标题或单个单词有自己的<p>标签。

所以我的问题是我可以在html标签之间匹配比x字符长的文本吗?

理想情况下,它也会忽略<br/><br>

这是我正在处理的 html 示例的链接

请注意,这只是我正在处理的描述,而不是整个页面。

4

2 回答 2

0

此正则表达式的组1将匹配n+标签之间的字符(100在此示例中为 n =):

<[^>]+>([^<]{100,})<[^>]+>

笔记:

  • 由于 OP 的草率 HTML,我故意匹配匹配的结束标记 ( <([^>]+)>([^<]{100,})<\1>) - 标记就是标记
  • 我避免使用lookbehind ( (?<=<[^>]+>)),因为匹配是任意长度的,这可能会导致回溯问题(某些语言,如java,甚至不支持它)。
于 2012-04-08T04:23:26.240 回答
0

稍微浏览一下网站,看起来很多描述都不足 100 个字符。您可以尝试多通道方法,在第一次迭代中,您从“ div id="tab1"”之后的第一个表中捕获所有内容。从这个起点开始,识别和消除您想要的部分可能比提取您想要的部分更容易。

于 2012-04-08T04:35:43.540 回答