获取以特定字符串开头的所有子字符串
我需要获取以特定字符串开头的所有子字符串。例如,如果字符串是 “总和([Calculation_8630212162300975])/锌(总和([Calculation_6310302163817118]))”,我应该得到的输出为 “Calculation_8630212162300975” 和 “Calculation_6310302163817118”获取以特定字符串开头的所有子字符串
我尝试了下面的代码。当存在这种字符串的单个实例时,它工作正常。但是如果发生多次,它会返回从第一个括号开始直到最后一个括号的字符串。对于上面提到的例子,它返回Calculation_8630212162300975])/锌(SUM([Calculation_6310302163817118
Matcher m = Pattern.compile("\\[([^)]+)\\]").matcher(formula);
while(m.find()) {
System.out.println(m.group(1));
}
硬而有力的解决方案
String value = "sum([Calculation_8630212162300975])/zn(sum([Calculation_6310302163817118]))";
if(value.contains("sum")){
String valueDum= value.substring(value.indexOf("sum")+3,value.length());
if(valueDum.contains("sum")){
String myFirstValue = valueDum.substring(0,valueDum.indexOf("/"));
String mySecondValue = valueDum.substring(valueDum.indexOf("sum")+3,valueDum.length());
}
}
}
这只是一个例子,字符串不一定会有“/”,我不认为这个解决方案在任何情况下都可以工作,例如我也可以遇到一个字符串“sum([Calculation_8630212162300975] )+ Zn(上总和([Calculation_6310302163817118]))+ [Calculation_8630212162300972]”。在这种情况下,我需要获取Calculation_8630212162300975,Calculation_6310302163817118和Calculation_8630212162300972 – user1302763
在此上实现您自己的逻辑。我已经写道,它的硬性和有力的解决方案只针对您提供的内容。我知道这个解决方案不会适用于所有的东西。它只是根据你的问题。将它们拆分成一个数组然后抓取它们中的每一个。如果我开始为此提供解决方案,这将是一个包含大量计算和逻辑的大型项目。如果在实现逻辑时出现了一些问题,那么你必须在这里问。 –
什么是你的规则匹配?和你有什么 –
'Calculation _ \\ d +' – dimo414