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

如何用Java正则表达式提取嵌套字符串中的CrMetaDataReqV1与CreateConReqV1

提取CrMetaDataReqV1和CreateConReqV1对象的正则方案

嘿,我来帮你搞定这个提取特定对象的需求!针对你给出的嵌套字符串,我整理了实用的正则表达式,能精准拆分出所有CrMetaDataReqV1和CreateConReqV1对象,让它们变成独立字符串处理。

单个对象匹配正则

  • 提取CrMetaDataReqV1对象:
    正则表达式:CrMetaDataReqV1\([^()]*\)
    说明:精准定位CrMetaDataReqV1开头,匹配括号内所有非括号的内容(适配你当前无嵌套的结构),直到闭合的),完美覆盖整个对象。

  • 提取CreateConReqV1对象:
    正则表达式:CreateConReqV1\([^()]*\)
    说明:逻辑和上面一致,专门匹配CreateConReqV1类型的对象。

一次性提取所有目标对象

如果你想一步到位捞全两种对象,可以用这个合并的正则:
(?:CrMetaDataReqV1|CreateConReqV1)\([^()]*\)
说明:用非捕获分组(?:...)同时匹配两种前缀,再匹配括号内的内容,一次就能提取所有你需要的对象。

实际代码示例(以Python为例)

import re

# 你的原始嵌套字符串
original_str = "[ CreateDocReqV1(docMetaD=CrMetaDataReqV1(documentName=string, documentType=pdf), docContent=CreateConReqV1(data=abc)), CreateDocReqV1(docMetaD=CrMetaDataReqV1(documentName=string, documentType=pdf), docContent=CreateConReqV1(data=def)), CreateDocReqV1(docMetaD=CrMetaDataReqV1(documentName=string, documentType=pdf), docContent=CreateConReqV1(data=ghk)) ]"

# 定义提取正则
extract_pattern = r'(?:CrMetaDataReqV1|CreateConReqV1)\([^()]*\)'
# 查找所有匹配项
target_objects = re.findall(extract_pattern, original_str)

# 输出每个独立对象
for obj in target_objects:
    print(obj)

运行后会输出:

CrMetaDataReqV1(documentName=string, documentType=pdf)
CreateConReqV1(data=abc)
CrMetaDataReqV1(documentName=string, documentType=pdf)
CreateConReqV1(data=def)
CrMetaDataReqV1(documentName=string, documentType=pdf)
CreateConReqV1(data=ghk)

完全符合你的期望!

小提醒

如果后续你的对象内部出现嵌套括号(比如参数值里包含括号),这个简单正则就会失效,那时候需要用支持递归匹配的正则引擎(比如Python的regex库),不过从你当前给出的示例来看,这个方案完全够用啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:20:31