如何用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
相关产品推荐
相关产品推荐

