获取以特定字符串开头的所有子字符串

获取以特定字符串开头的所有子字符串

问题描述:

我需要获取以特定字符串开头的所有子字符串。例如,如果字符串是 “总和([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)); 

} 
+0

什么是你的规则匹配?和你有什么 –

+0

'Calculation _ \\ d +' – dimo414

硬而有力的解决方案

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()); 
     } 
    } 
} 
+0

这只是一个例子,字符串不一定会有“/”,我不认为这个解决方案在任何情况下都可以工作,例如我也可以遇到一个字符串“sum([Calculation_8630212162300975] )+ Zn(上总和([Calculation_6310302163817118]))+ [Calculation_8630212162300972]”。在这种情况下,我需要获取Calculation_8630212162300975,Calculation_6310302163817118和Calculation_8630212162300972 – user1302763

+0

在此上实现您自己的逻辑。我已经写道,它的硬性和有力的解决方案只针对您提供的内容。我知道这个解决方案不会适用于所有的东西。它只是根据你的问题。将它们拆分成一个数组然后抓取它们中的每一个。如果我开始为此提供解决方案,这将是一个包含大量计算和逻辑的大型项目。如果在实现逻辑时出现了一些问题,那么你必须在这里问。 –