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

Java正则处理字符串数组:提取嵌套DmetaD与DConD对象

提取DmetaD和DConD对象字符串的解决方案

思路分析

要从给定的嵌套对象数组字符串里,精准捕获所有以DmetaD和DConD开头的完整对象片段,用正则表达式是最直接高效的办法——我们可以通过规则定位目标对象的起始和结束位置,轻松提取出需要的字符串。

正则表达式设计

针对你的字符串结构,这个正则表达式可以完美匹配目标内容:

(DmetaD\([^)]+\))|(DConD\([^)]+\))
  • DmetaD\( / DConD\(:精准匹配目标对象的开头标识
  • [^)]+:匹配括号内的所有内容(排除闭合括号),确保只捕获对象内部的键值对,不会误匹配到外层括号)
  • \):匹配对象的闭合括号,完成整个对象的捕获

代码示例(以Java为例)

假设你用Java处理这个字符串,具体实现代码如下:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ExtractTargetObjects {
    public static void main(String[] args) {
        String inputStr = "[ Dobj(id=null, dmetaD=DmetaD(id=2068, embedded=true, size=123, comment=raghu, name=string, type=pdf)),dcont=DConD(data=abc)), Dobj(id=null, dmetaD=DmetaD(id=2069, embedded=true, size=123, comment=raghu, name=string, type=pdf)),dcont=DConD(data=abc)) ]";
        
        // 编译正则表达式
        Pattern pattern = Pattern.compile("(DmetaD\\([^)]+\\))|(DConD\\([^)]+\\))");
        Matcher matcher = pattern.matcher(inputStr);
        
        // 遍历并输出所有匹配结果
        int count = 1;
        while (matcher.find()) {
            String targetObj = matcher.group();
            System.out.printf("第%d个提取结果:%s%n", count++, targetObj);
        }
    }
}

运行结果

执行上述代码后,会输出你需要的独立对象字符串:

第1个提取结果:DmetaD(id=2068, embedded=true, size=123, comment=raghu, name=string, type=pdf)
第2个提取结果:DConD(data=abc)
第3个提取结果:DmetaD(id=2069, embedded=true, size=123, comment=raghu, name=string, type=pdf)
第4个提取结果:DConD(data=abc)

补充说明

如果后续你的字符串中出现嵌套括号(比如某个键值对的内容包含括号),可以把正则调整为递归匹配模式,但从你当前提供的示例来看,上面的正则已经完全够用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:58:43