java - 在 Java 中获取括号内的参数并将其添加到列表中

标签 java regex

输入:

(cl(A, B, 0.620) :-  /* #pos=1,513 *

预期输出:

Fetch and Add A and B to a list

代码(尝试 1):

Matcher m2 = Pattern.compile("\\((.*?)\\)").matcher(inputString);
            while(m2.find()) 
                {
                System.out.println(m2.group(1));
                }

输出:

cl(A, B, 0.620

代码尝试2:

System.out.println(inputString.substring(inputString.indexOf("(")+1,inputString.indexOf(")")));

仍然得到相同的输出。

请告诉我错误所在。

最佳答案

您当前尝试的主要问题是您的模式错误:

\\((.*?)\\)

它匹配一个单个左括号,后跟一个单个右括号。请注意,模式中的捕获组不算在内;这些括号不会匹配。相反,请使用以下模式:

\\(.*?\\((.*?)\\)

完整代码:

String inputString = "(cl(A, B, 0.620) :-  /* #pos=1,513 *";
List<String> list = new ArrayList<>();
Matcher m2 = Pattern.compile("\\(.*?\\((.*?)\\)").matcher(inputString);
if (m2.find()) {
    String match = m2.group(1);
    String[] parts = match.split(",\\s+");
    for (String part : parts) {
        list.add(part);
        System.out.println("Found an item: " + part);
    }
}

输出:

Found an item: A
Found an item: B
Found an item: 0.620

此处演示:

Rextester

关于java - 在 Java 中获取括号内的参数并将其添加到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43501839/

相关文章:

javascript - 正则表达式仅适用于不以空格分隔的单个单词

java - 请求范围的 ContainerRequestFilter

java数据访问: is this good style of java data access code,还是尝试太多了?

python - Scrapy LinkExtractor - 要遵循哪个 RegEx?

javascript - String.replace 正则表达式不会替换字符串中的 `*`

Python正则表达式解析并放入多维列表

java - 在eclipse快捷方式中取消注释java代码

java - 插件未显示在 openfire 控制台中

java默认Locale是en_US,它使用 ","作为十进制数

JavaScript字符串修改(可能涉及到正则表达式)