python - 从括号出现开始的分隔字符串(正则表达式)
问题描述
我怎样才能达到这样的效果:“Ca(OH)2”=>“Ca”和“(OH)2”
在python中,可以这样实现:
import re
compound = "Ca(OH)2"
segments=re.split('(\([A-Za-z0-9]*\)[0-9]*)',compound)
print(segments)
Output: ['Ca', '(OH)2', '']
我正在关注https://medium.com/swlh/balancing-chemical-equations-with-python-837518c9075b中的本教程(除了我想用 Java 来做)
(\([A-Za-z0-9]*\)[0-9]*)
为了分解正则表达式,最外面的括号(靠近单引号)表示这是我们的捕获组,它是我们想要保留的。在它们之前带有正斜杠的内括号意味着我们想要从字面上找到括号(这称为转义) [A-Za-z0-9] 表示我们可以接受我们的任何字母(任何大小写)或数字括号和方括号后面的星号是量词。这意味着我们可以在括号内包含零个或无限多个字母(无论大小写)或数字。和结尾附近的 [0-9] 表示我们希望在拆分中包含括号右侧的所有数字。
我试图用 Java 来做,但输出不是我想要的:
String compound = "Ca(OH)2";
String[] segments = compound.split("(\\([A-Za-z0-9]*\\)[0-9]*)");
System.out.println(Arrays.toString(segments));
Output: [Ca]
解决方案
试试这个伙伴:
String[] segments = compound.split("([^\\w*])");
所以输出应该是:
ca , oh ,2
希望它会帮助你!
推荐阅读
- linux - Intel-64 和 ia32 原子操作获取-释放语义和 GCC 5+
- babeljs - ESlint - 解析错误:类私有函数的意外令牌
- java - com.google.api.client.googleapis.json.GoogleJsonResponseException 从谷歌存储桶读取
- ruby-on-rails - 如何使用 ruby on rails 查询 postgresql 中的 created_at 列
- css - 引导子菜单宽度 100
- asp.net - 发布到 Azure 时出现错误 BC3002
- git - 克隆时Git不询问用户名和密码
- r - GMM 滚动估计对每个窗口重复相同的值
- xamarin.forms - 未找到发布属性中的 Xamarin.Forms 绑定
- python - 打开 Excel 文件,更改背景颜色并添加注释,然后保存(python)