java - 根据条件结束正则表达式

标签 java regex string split

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

这就是我所拥有的

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

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

示例 Fe2(CH3)2(CH2O)(CH3)

这需要分成

Fe2

(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/

相关文章:

javascript - 需要 RegEx for URI 模板 (RFC 6570)

c# - 使用正则表达式从 C# 字符串中删除所有空格

python - 如何在 python 中将 api 响应的一部分转换为完整的 json

java - 如何将两个 double 值相加以形成另一个 double 值(强制转换)

java - 在 Android Studio 中迁移到 AndroidX 后出现 YoutubeAndroidPlayerAPI 错误

java - Tomcat、HTTP Keep-Alive 和 Java 的 HttpsUrlConnection

javascript - 使用正则表达式从字符串中提取 href

regex - 基于本体的字符串分类

c - 如何从文件读取两个字符串并将它们存储在两个单独的数组中

java - 在 Activity 中显示谷歌地图(不是MainActivity)