gpt4 book ai didi

java - 获取括号之间的字符串,排除其他括号

转载 作者:行者123 更新时间:2023-12-01 17:46:54 27 4
gpt4 key购买 nike

我有一个字符串形式的数学表达式,例如:(5 + 4) - 5 - (6 - (3 - 4) + (5 - (3 - 6)))

我正在尝试使用正则表达式来提取括号内不包含其他括号的表达式。在本例中为 (5 + 4)、(3 - 4)、(3 - 6)。

我认为有两种可能的方法:1. 排除也包含括号或的匹配项2. 仅包含字符串包含数字或 +、-、/、* 的匹配项。 (3*4)、(5/6)、(3) 等...

到目前为止我已经:

    String ex = "(5 + 4) - 5 - (6 - (3 - 4) + (5 - (3 - 6)))";
String match = "";

Pattern pattern = Pattern.compile("\\(([^\\)]+)\\)");
Matcher matcher = pattern.matcher(ex);
if(matcher.find()){
match = matcher.group();
}

不过我只得到(5 + 4)。我对正则表达式非常陌生,因此我们将不胜感激!

最佳答案

您必须使用 while 而不是 if 迭代所有匹配

String ex = "(5 + 4) - 5 - (6 - (3 - 4) + (5 - (3 - 6)))";
List<String> matches = new ArrayList<>();

Pattern pattern = Pattern.compile("\\(([^\\)]+)\\)");
Matcher matcher = pattern.matcher(ex);
while (matcher.find()){
matches.add(matcher.group(1));
}

请注意,我使用的是 matcher.group(1) 那么结果将排除括号。我还建议使用这个正则表达式

Pattern.compile("\\(([^\\(\\)]+)\\)"); //Excluding left parentheses too

关于java - 获取括号之间的字符串,排除其他括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54136013/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com