You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则匹配未被div/table包裹的独立p标签实现段落分割

调整后的正则及实现代码

你可以通过增加前后环视断言匹配独立p标签,同时调整捕获范围保留完整p标签结构,代码如下:

// 匹配独立未被div/table包裹的完整p标签,允许标签前后存在空白/换行
$pattern = '/(?<=^|>)\s*(<p(?:\s+[^>]*)?>.*?<\/p\s*>)\s*(?=<p|\z)/is';
if (preg_match_all($pattern, $Content, $matches)) {
    // $matches[1] 中存储所有符合要求的完整独立p标签
    $independentParagraphs = $matches[1];
    foreach ($independentParagraphs as $pTag) {
        // 此处编写你的插入逻辑,例如在p标签后追加指定文本
        $Content = str_replace($pTag, $pTag . '你需要插入的指定文本', $Content);
    }
}

规则说明

  • 完整p标签保留:通过最外层括号直接捕获整个<p>...</p>结构,不会仅提取内部内容
  • 独立段落校验:
    • 前置断言(?<=^|>):保证p标签的前序位置要么是内容开头,要么是其他标签的闭合位置,排除嵌套在div、table内部的p标签
    • 后置断言(?=<p|\z):保证p标签闭合后下一个非空白内容要么是新的p标签开头,要么是内容结束,完全符合你提出的「目标</p>下一段内容以<p>开头」的判断标准
    • 修饰符i忽略p标签大小写,s允许.匹配换行符,适配p标签内部存在换行的场景

扩展提示

如果后续需要排除更多嵌套标签的场景,只需要在断言规则中补充对应的标签判断逻辑即可。

内容的提问来源于stack exchange,提问作者Aditya Agarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:27:00