我正在寻找一个正则表达式来拆分包含()的字符串。

这就是我所拥有的

String regex = "(?=\\()|()"


第一部分是正确的,因此它以“(”开头。我需要第二部分以“)”结尾,但是如果“)”之后有数字,则需要以数字结尾。


Fe2(CH3)2(CH2O)(CH3)

这需要分成

铁2

(CH3)2

(CH2O)

(CH3)

“)”后面的数字可以是一位或两位数。

我还需要将Fe(C5H5)2O4(CH3)拆分为例如



(C5H5)2

O4

(CH3)

最佳答案

更新后的新逻辑:匹配某些字母字符或带括号的内容,后跟可选数字。

final String f = "Fe2(CH3)2O4(CH2O)2(CH3)";
final Matcher m = Pattern.compile("(\\p{L}+|\\(.*?\\))\\d*").matcher(f);
while (m.find()) System.out.println(m.group());

关于java - 有条件结束正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10776971/

10-17 01:57