我正在研究一种能够计算分子量的应用程序,我需要将一个字符串分成不同的分子.我一直在使用正则表达式来做这个,但我还没有完全开始工作.我需要正则表达式来匹配像H2OCl4和Na2H2O这样的模式,它会将其分解为匹配:
我一直在研究的正则表达式是这样的:
([A-Z]\d*|[A-Z]*[a-z]\d*)
Run Code Online (Sandbox Code Playgroud)
它真的很接近,但它目前打破了匹配:
我需要将Cl4视为一场比赛.任何人都可以帮助我完成我在此遗漏的最后一部分.我对正则表达式很新.谢谢.
Jim*_*hel 10
我想你想要的是什么 "[A-Z][a-z]?\d*"
也就是说,一个大写字母,后跟一个可选的小写字母,后跟一个可选的数字字符串.
如果你想匹配0,1或2个小写字母,那么你可以写:
"[A-Z][a-z]{0,2}\d*"
但请注意,这两个正则表达式都假定输入数据有效.鉴于数据不佳,它会跳过不良数据.例如,如果输入字符串是"H2ClxxzSO4",那么您将获得:
如果要检测错误数据,则需要检查Index
返回Match
对象的属性,以确保它等于起始索引.