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

如何用正则表达式匹配每个DIV中的首个空P标签并替换内容

解决DIV内首个空

标签的替换问题

需求说明

你需要实现仅替换每个DIV中的首个空

标签,在其中插入指定文本,但当前使用的正则(<p[^>]*>)(</p>)会匹配DIV内所有空

标签,且要求只处理字符串、不解析HTML文件。

原代码与示例

原代码示例:

var yourDivString = "<DIV WITH Paragraph Tag(s) and many other tags>";
yourDivString = Regex.Replace(yourDivString , "(<p[^>]*>)(</p>)", "THIS IS FIRST EMPTY P TAG in EACH DIV")

输入示例:

<div>
    <p></p>
    <p></p>
</div>

预期输出:

<div>
    <p>THIS IS FIRST EMPTY P TAG in EACH DIV</p>
    <p></p>
</div>

解决方案

核心思路是先定位到每个<div>的范围,再在这个范围内只匹配第一个空<p>标签,避免全局替换所有空

。

修改后的正则与代码

使用带正向预查和非贪婪匹配的正则,配合单行模式(让.匹配换行符),确保精准匹配目标:

var pattern = @"(?<=<div[^>]*>)(?:(?!<p[^>]*></p>).)*?(<p[^>]*>)(</p>)";
yourDivString = Regex.Replace(yourDivString, pattern, "$1THIS IS FIRST EMPTY P TAG in EACH DIV$2", RegexOptions.Singleline | RegexOptions.IgnoreCase);

正则逻辑解释

  • (?<=<div[^>]*>):正向预查,确保当前位置在某个<div>标签之后
  • (?:(?!<p[^>]*></p>).)*?:非捕获组,以非贪婪模式匹配任意字符(包括换行),直到遇到第一个空<p>标签
  • (<p[^>]*>)(</p>):捕获空<p>的开始和结束标签,替换时保留原有标签结构,只插入指定文本

多DIV场景验证

如果存在多个DIV,比如输入:

<div>
    <p></p>
    <p></p>
</div>
<div>
    <p class="test"></p>
    <p></p>
</div>

执行代码后的输出为:

<div>
    <p>THIS IS FIRST EMPTY P TAG in EACH DIV</p>
    <p></p>
</div>
<div>
    <p class="test">THIS IS FIRST EMPTY P TAG in EACH DIV</p>
    <p></p>
</div>

每个DIV内的首个空

都会被正确替换,后续空

不受影响。

内容的提问来源于stack exchange,提问作者PavanKumar GVVS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 13:15:38