我在尝试根据括号拆分刺痛时遇到问题。我有一个像这样 Fe(C5H5)2FeO3 的字符串,我需要将字符串拆分为一个数组,以便数组读取
铁
(C5H5)2
三氧化二铁
我正在使用此代码。
String form = "Fe(C5H5)2FeO3";
from.split([()]+);
我无法让“)”之后的字符分开。这也必须适用于同一字符串中的多组 ()。
谢谢
积极向前看和向后看可以做到这一点:
String formula = "Fe(C5H5)2FeO3";
String regex = "(?=\\()|(?<=\\)\\d)";
String[] tokens = formula.split(regex );
System.out.println(Arrays.toString(tokens));
有关这方面的更多信息,请查看正则表达式教程
您可以使用简单的正则表达式来匹配序列的一部分,而不是在正则表达式上拆分:
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());
}
}
}
该程序产生以下输出:
Fe
(C5H5)2
FeO3