我遇到了一个基于括号分裂刺痛的问题。 我有这样的字符串 Fe(C5H5)2FeO3和我需要将sting分成一个数组,所以数组读取
铁
(C5H5)2
的FeO 3
我正在使用此代码。
String form = "Fe(C5H5)2FeO3";
from.split([()]+);
我无法在“)”分开后获得字符。 这也必须适用于同一个字符串中的多组()。
由于
答案 0 :(得分:3)
String formula = "Fe(C5H5)2FeO3";
String regex = "(?=\\()|(?<=\\)\\d)";
String[] tokens = formula.split(regex );
System.out.println(Arrays.toString(tokens));
有关详情,请查看regular expressions tutorial
答案 1 :(得分:1)
您可以使用简单的正则表达式来匹配序列的某些部分,而不是在正则表达式上进行拆分:
import java.util.*;
import java.util.regex.*;
import java.lang.*;
class Main {
public static void main (String[] args) throws java.lang.Exception
{
String formula = "Fe(C5H5)2FeO3";
Pattern p = Pattern.compile("[^(]+|[(][^)]*[)]\\d+");
Matcher m = p.matcher(formula);
while (m.find()) {
System.out.println(m.group());
}
}
}
此程序produces以下输出:
Fe
(C5H5)2
FeO3