替换化学式字符串中的文本

时间:2014-04-09 23:11:49

标签: regex chemistry

我在编写一个带有化学式字符串的函数时遇到了麻烦,例如" NiNFe(AsO2)2"并删除其中一个元素 我目前的尝试是:

pattern = new RegExp(symbol, "g")
formula.replace(pattern, "")

如果符号为" N"公式为" NiNFe(AsO2)2"我最终得到了" iFe(AsO2)2"而不是所需的" NiFe(AsO2)2"。有没有人知道如何以这样的方式对它进行编码,以便将N与Ni区分开来并取而代之?

3 个答案:

答案 0 :(得分:2)

RegExp(symbol+'(?![a-z])','g');将匹配该符号(如果后面没有小写字母

答案 1 :(得分:1)

使用否定前瞻。以下内容也将删除它可能具有的任何量词:

pattern = new RegExp(symbol + "(?![a-z])" + "\d*", "g");

答案 2 :(得分:0)

如果由于某种原因你想避免使用否定前瞻(例如.javascript支持它,但其他一些正则表达式引擎没有),你只需匹配symbol + "([^a-z])"并替换为$1