Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式在html标记之间匹配长度超过x个字符的文本?_Html_Regex_Preg Match - Fatal编程技术网

正则表达式在html标记之间匹配长度超过x个字符的文本?

正则表达式在html标记之间匹配长度超过x个字符的文本?,html,regex,preg-match,Html,Regex,Preg Match,我的任务是迁移您将遇到的最糟糕的HTML产品描述。它由表格和段落组成。大多数都不是100%有效的HTML,还有很多微软的标签是由微软Word提供的。它到处都是行内风格的标签,而且大部分都依赖于你所见过的最棒的css规则 从本质上说,我已经意识到,唯一有用的东西是文本的段落。我不能仅仅抓住标签,因为有时段落不使用它们,有时标题或单个单词有自己的标签 所以我的问题是,我能在html标记之间匹配长度超过x个字符的文本吗 理想情况下,它也会忽略和 我正在处理的html的一个例子 注意,这只是我正在处理的

我的任务是迁移您将遇到的最糟糕的HTML产品描述。它由表格和段落组成。大多数都不是100%有效的HTML,还有很多微软的标签是由微软Word提供的。它到处都是行内风格的标签,而且大部分都依赖于你所见过的最棒的css规则

从本质上说,我已经意识到,唯一有用的东西是文本的段落。我不能仅仅抓住
标签,因为有时段落不使用它们,有时标题或单个单词有自己的
标签

所以我的问题是,我能在html标记之间匹配长度超过x个字符的文本吗

理想情况下,它也会忽略


我正在处理的html的一个例子


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

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

]+>([^
注:


  • 我故意没有匹配一个匹配的结束标记(
    ]+)>([^稍微浏览一下站点,看起来很多描述都少于100个字符。您可以尝试一种多遍方法,在第一次迭代中,从“
    div id=“tab1”后面的第一个表中捕获所有内容
    ”。从这一点出发,可能更容易识别和删除您不想要的部分,而不是提取您想要的部分。

    我只能访问描述-只有选项卡1…但仍然存在仅获取内容的问题。是否有任何方法可以让它忽略
    和标记。…这样它们就不会算作结束标记或开始标记了吗?对于这类事情,regex不是一个好工具(我尝试过使用负面环视,但无法使其工作)。但是,只需使用您的本地语言(我假设PHP,so
    str_replace()
    标记为空白)在使用正则表达式之前从输入中删除所有此类标记。如果需要知道标记的位置,请将

    替换为
    [br]
    等,以便它们不再与正则表达式匹配,但仍能在文本中识别
    <[^>]+>([^<]{100,})<[^>]+>