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

如何通过正则表达式匹配完整的process代码块内容?

匹配嵌套大括号的process代码块解决方案

要匹配每个process开头的完整代码块(包含嵌套大括号),核心是处理嵌套的大括号结构,不能简单依赖贪婪匹配(会因为中间的闭合大括号提前终止)。以下分不同正则引擎给出解决方案:

支持递归匹配的引擎(PCRE、PHP、Python regex库等)

使用递归正则来处理任意层级的嵌套大括号,正则表达式如下:

^process \w+ \{((?:[^{}]|(?R)))*\}

配合**多行模式(m修饰符)**使用,让^匹配每行的开头。

正则说明:

  • ^process \w+ \{:精准匹配行首的process声明行(如process ADT {)
  • ((?:[^{}]|(?R)))*:非捕获组,匹配两种内容:
    • [^{}]:任何非大括号的字符
    • (?R):递归匹配整个正则模式,处理嵌套的大括号结构
  • \}:匹配当前process块的最外层闭合大括号

Python示例(需安装regex库)

import regex

target_text = """process ADT {
    { DOMAINNAME localdomain }
    { EODEFAULT {} }
    { EOXLATE {} }
    { XLATESTARTMODE 0 }
} 
process ORU {
    { DOMAINNAME localdomain }
    { EODEFAULT {} }
    { EOXLATE {} }
    { SMATCYCLESIZE 100 }
    { TRACINGDEFAULT 0 }
    { XLATE {
    { XLATESTARTMODE 0 }
}
"""

# 匹配所有完整process块
pattern = r'^process \w+ \{((?:[^{}]|(?R)))*\}'
for match in regex.finditer(pattern, target_text, flags=regex.MULTILINE):
    print("匹配结果:")
    print(match.group(0))

JavaScript环境(无原生递归支持)

JavaScript不支持(?R)递归语法,可使用多层嵌套的分组模拟有限层级的大括号匹配,正则如下(支持3层嵌套,可按需扩展):

/^process \w+ \{((?:[^{}]|{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})*)\}/gm

同样开启多行模式(m修饰符)和全局匹配(g修饰符)。

说明

该正则通过嵌套分组处理层级大括号,若你的代码块嵌套层级更深,可继续扩展嵌套的{(?:[^{}]|...)*}结构。

验证结果

使用上述正则可精准匹配到你期望的两个完整代码块:

  • 匹配1:process ADT { ... }的全部内容
  • 匹配2:process ORU { ... }的全部内容(包含内部嵌套的XLATE块)

内容的提问来源于stack exchange,提问作者Tobias G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 12:02:07