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

如何拆分特定格式带括号字符串并提取指定字段?

一步到位的正则方案提取三个字段

嘿,我刚好处理过类似的字符串解析需求,给你一个鲁棒的正则表达式,能一次性捕获你需要的三个字段,不用拆分多次匹配!

核心正则表达式

^(.+?)\s*\((.+?)\)\s*(\S+)$

每个捕获组的作用

  • 第一个捕获组 (.+?):匹配带空格的名称(不管名称是否包含空格,比如flow gavage或flowWithoutSpace都能精准捕获)。用非贪婪模式+?是为了避免把名称和括号之间的空格也包含进去,\s*用来匹配名称与左括号之间可能存在的任意空格(兼容示例里两种空格情况)。
  • 第二个捕获组 (.+?):就是你已经在使用的括号内内容匹配,非贪婪模式确保只捕获一对括号内的内容(避免多括号场景的误匹配)。
  • 第三个捕获组 (\S+):匹配括号后的CONST值,\S+表示匹配所有非空白字符,刚好对应示例里无空格的大写CONST(如果CONST固定是大写字母,可以改成[A-Z]+来更精准匹配)。

代码示例(Python)

import re

# 定义正则模式
pattern = r'^(.+?)\s*\((.+?)\)\s*(\S+)$'

# 测试你的示例字符串
test_cases = [
    'flow gavage(ZAB_B2_COCUM) BS',
    'flowWithoutSpace (WitoutUnderscore) BS'
]

for string in test_cases:
    match_result = re.match(pattern, string)
    if match_result:
        # 提取三个字段,可选strip()处理意外的前后空格
        name = match_result.group(1).strip()
        bracket_content = match_result.group(2)
        const_value = match_result.group(3)
        
        print(f"提取结果:")
        print(f"1. 名称:'{name}'")
        print(f"2. 括号内内容:'{bracket_content}'")
        print(f"3. CONST值:'{const_value}'\n")

边界情况优化

如果你的字符串可能存在开头/结尾的多余空格(比如' My Flow Name (ABC_DEF) XYZ '),可以把正则调整为:

^\s*(.+?)\s*\((.+?)\)\s*(\S+)\s*$

这样会自动忽略字符串首尾的空白字符,不影响字段提取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:37:48