正则表达式:查找所有包含其他特定 HTML 标签的 HTML 标签

正则表达式:查找所有包含其他特定 HTML 标签的 HTML 标签

我有一些 html 标签以 开头<p class="mb-40px">并以 结尾,</p>第一个标签中包含一些其他标签,例如</li> </ul> </div>spaces\n如您所见。

<p class="mb-40px"></g></svg>               </a>
            </li>
             
        </ul>

    </div>
    </p>

    <p class="mb-40px">Foarte frumos lucru</p>
<p class="mb-40px">I love cars</p>

我想找到并删除所有 html 标签,例如第一个包含</li> </ul> </div>

输出应该是:

    <p class="mb-40px">Foarte frumos lucru</p>
<p class="mb-40px">I love cars</p>

我的解决方案并不好:

寻找:(?=<p class="mb-40px">)[\s\S]*?</li></div>|</ul>[\s\S]*?</p>

替换为:LEAVE EMPTY

答案1

这将删除所有<p class="mb-40px">仅包含空标签或空格的标签:

  • Ctrl+H
  • 找什么:<p class="mb-40px">(?:<.+?>|\s)+?</p>\R*
  • 用。。。来代替:LEAVE EMPTY
  • 查看 环绕
  • 查看 正则表达式
  • Replace all

解释:

<p class="mb-40px"> # start tag
  (?:                 # non capture group
    <.+?>               # any tag
   |                   # OR
    \s                  # any kind of space
  )+?                 # end group, must appear 1 or more times, not greedy
</p>                # end tag
\R*                 # 0 or more any kind of linebreak

截图(之前):

在此处输入图片描述

截图(之后):

在此处输入图片描述

答案2

使用以下内容:

  • Ctrl+H
  • 找什么:^(?!.*(</p>)).*|\s+</p>
  • 用。。。来代替:LEAVE EMPTY
  • 查看 相符
  • 查看 环绕
  • 查看 正则表达式
  • 取消选中 . matches newline
  • Replace all

答案3

另一个更完整的解决方案是可以处理里面的其他标签 <p class="mb-40px"> ... </p>

 <p class="mb-40px">[^<>]*</p>\R?(*SKIP)(*F)|.

你可以尝试一下这里并附有解释。

意识到全部您的文件将被删除!除非<p class="mb-40px"> ... </p>

相关内容