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

如何使用正则表达式仅匹配两个指定字符串之间的符合规则的内容

正则匹配指定区间内的所有符合规则的内容

方案1:两步法(更推荐,可读性高、兼容性好)

你已经可以成功提取abcd和xyz之间的文本,只需要再加一步全局匹配即可:

  1. 第一步提取区间内容,正则补充单行模式标记,确保跨行匹配生效:
    (?s)(?<=abcd\n).*?(?=\nxyz)
    注:部分编程语言不需要加(?s),可单独设置单行匹配模式
  2. 第二步在提取到的区间文本中,全局匹配目标规则:
    a=[^;]*;
    用[^;]*替代.*可以避免意外跨分号匹配,结果更准确。

方案2:单条正则一步匹配(适合仅允许输入一条正则的场景)

直接使用如下正则即可一次性拿到所有符合要求的结果:
(?s)(?:abcd\n|\G(?!^))(?:(?!a=|xyz).)*\K(a=[^;]*;)
各部分逻辑说明:

  • (?s):开启单行模式,让.可以匹配换行符
  • (?:abcd\n|\G(?!^)):锚定匹配起点,要么从abcd的下一行开始,要么从上一次匹配结束的位置继续,确保所有匹配都落在abcd之后
  • (?:(?!a=|xyz).)*:跳过所有既不是a=开头、也不是xyz开头的内容,遇到xyz就自动终止匹配
  • \K:丢弃前面已经匹配的前缀内容,仅保留后面的目标匹配项
  • (a=[^;]*;):匹配你需要的a=.*;格式内容

两种方案最终输出结果都为:

a=1;
a=2;
a=4;

不会匹配到xyz之后的a=5;、a=6;。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:54:03