加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用正则表达式匹配化学式/化学方程式

发布时间:2020-12-14 04:21:39 所属栏目:百科 来源:网络整理
导读:对于不是特别复杂的化学式和化学方程式来说,可以用一个或多个正则表达式来匹配。 一个化学式满足: 元素1 角标 元素2 角标 元素3 角标 ... 元素第一个字母必须大写,可以有第二个字母但必须小写。 角标可以是上(离子,+/-)也可以是下(分子中该元素原子数

对于不是特别复杂的化学式和化学方程式来说,可以用一个或多个正则表达式来匹配。
一个化学式满足:

元素1 角标 元素2 角标 元素3 角标 ...

元素第一个字母必须大写,可以有第二个字母但必须小写。
角标可以是上(离子,+/-)也可以是下(分子中该元素原子数量),是一个正整数,如果是1则不写。
元素+角标可以嵌套括号。
匹配绝大多数化学式的正则表达式

[A-Z][a-z]?d*|((?:[^()]*(?:(.*))?[^()]*)+)d+


在线DEMO
当然,对于特别复杂的化学式,比如:

(1) K0.85Ca3(Si2.15Al2.85)O11(SO4)0.7(CO3)0.3

(2) (Na,Ca,K)8(Si,Al)12O24(SO4,Cl,CO3)3·5H2O

可能就不行了。
对于离子式暂时还不行。

一个化学方程式满足:

数量 化学式 + 数量 化学式 + 数量 化学式 + ... =(/)(反应条件) 数量 化学式 + 数量 化学式 + 数量 化学式 + ...

数量是一个正整数,如果是1则不写,反应条件可以不写(默认是常温常压),方向是=/→(如果是可逆反应用←→),反应条件可以有加热、高温、光照、通电、高压、催化剂等。生成物可以有↑(反应物没有气体,生成物中液体生成气体)或者↓(生成物液体中生成不溶的沉淀)。
暂未找到匹配绝大多数化学方程式的正则表达式。
另外发一个在线的JavaScript化学方程式自动配平工具:点这里
参考:用正则表达式解析化学式 —— Stack Overflow以及怎样通过正则表达式来查找化学式 —— Stack Overflow

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读