正则表达式在html标记之间匹配长度超过x个字符的文本?
我的任务是迁移您将遇到的最糟糕的HTML产品描述。它由表格和段落组成。大多数都不是100%有效的HTML,还有很多微软的标签是由微软Word提供的。它到处都是行内风格的标签,而且大部分都依赖于你所见过的最棒的css规则 从本质上说,我已经意识到,唯一有用的东西是文本的段落。我不能仅仅抓住正则表达式在html标记之间匹配长度超过x个字符的文本?,html,regex,preg-match,Html,Regex,Preg Match,我的任务是迁移您将遇到的最糟糕的HTML产品描述。它由表格和段落组成。大多数都不是100%有效的HTML,还有很多微软的标签是由微软Word提供的。它到处都是行内风格的标签,而且大部分都依赖于你所见过的最棒的css规则 从本质上说,我已经意识到,唯一有用的东西是文本的段落。我不能仅仅抓住标签,因为有时段落不使用它们,有时标题或单个单词有自己的标签 所以我的问题是,我能在html标记之间匹配长度超过x个字符的文本吗 理想情况下,它也会忽略和 我正在处理的html的一个例子 注意,这只是我正在处理的
标签,因为有时段落不使用它们,有时标题或单个单词有自己的
标签
所以我的问题是,我能在html标记之间匹配长度超过x个字符的文本吗
理想情况下,它也会忽略
和
我正在处理的html的一个例子
注意,这只是我正在处理的描述,而不是整个页面。此正则表达式的组
1
将匹配标记之间的n+
字符(在本例中,n=100
):
]+>([^
注:
- 我故意没有匹配一个匹配的结束标记(
]+)>([^稍微浏览一下站点,看起来很多描述都少于100个字符。您可以尝试一种多遍方法,在第一次迭代中,从“
”。从这一点出发,可能更容易识别和删除您不想要的部分,而不是提取您想要的部分。我只能访问描述-只有选项卡1…但仍然存在仅获取内容的问题。是否有任何方法可以让它忽略div id=“tab1”后面的第一个表中捕获所有内容
和标记。…这样它们就不会算作结束标记或开始标记了吗?对于这类事情,regex不是一个好工具(我尝试过使用负面环视,但无法使其工作)。但是,只需使用您的本地语言(我假设PHP,so
标记为空白)在使用正则表达式之前从输入中删除所有此类标记。如果需要知道标记的位置,请将str_replace()
替换为
等,以便它们不再与正则表达式匹配,但仍能在文本中识别[br]
<[^>]+>([^<]{100,})<[^>]+>