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

如何编写正则表达式选中指定模式以外的全部内容?

正则表达式:匹配除指定HTML块外的所有文本

需求

需要匹配文本中所有不在<ol>...</ol>标签及其内容之外的文本,将非标签块的内容拆分为独立匹配项。

解决方案

使用以下正则表达式(需开启DOTALL模式,让.匹配换行符):

(?s)(?:^|<\/ol>)\s*(.*?)\s*(?=<ol>|$)

正则说明

  • (?s):启用DOTALL模式,使.可以匹配换行符,适配多行文本场景
  • (?:^|<\/ol>):匹配文本开头或<ol>标签的结束位置,作为目标文本的起始锚点
  • \s*:匹配文本前后的空白字符(若需保留原格式的空白,可移除该部分)
  • (.*?):非贪婪捕获目标文本,直到遇到下一个<ol>标签或文本结尾
  • (?=<ol>|$):正向预查,确保捕获的文本后紧跟<ol>标签或文本结束,避免包含<ol>块内容

匹配结果验证

针对测试文本,该正则会捕获到4个符合预期的匹配项:

  1. 第一个匹配项:
This is the second paragraph. It contains an ordered list: 
  1. 第二个匹配项:
This is a text after the list in the second paragraph.
        This is another part of a paragraph
  1. 第三个匹配项:
This is a text after the other list in the second paragraph.
This is a text after the list in the second paragraph.
        This is another part of a paragraph
  1. 第四个匹配项:
test to odfjdf iofsdfsoh

原正则失效原因

你之前使用的^.*(<([^>]+?)([^>]*?)>(.*?)<\/\1>)?.*$会匹配整行文本,仅检查行内是否存在目标标签,但仍会将整行(包括标签块)全部选中,无法实现排除<ol>块的效果。

内容的提问来源于stack exchange,提问作者Marcos Costa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 22:25:22