我想从单词中提取元素符号(如果有)。为此,我准备了一个正则表达式匹配模式,由元素周期表中所有元素的符号组成。在
H|He|Li|Be|B|C|N|O|F|Ne|Na|Mg|Al|Si|P|S|Cl|Ar|K|Ca|Sc|Ti|V|Cr|Mn|Fe|Co|Ni|Cu|Zn|Ga|Ge|As|Se|Br|Kr|Rb|Sr|Y|Zr|Nb|Mo|Tc|Ru|Rh|Pd|Ag|Cd|In|Sn|Sb|Te|I|Xe|Cs|Ba|La|Ce|Pr|Nd|Pm|Sm|Eu|Gd|Tb|Dy|Ho|Er|Tm|Yb|Lu|Hf|Ta|W|Re|Os|Ir|Pt|Au|Hg|Tl|Pb|Bi|Po|At|Rn|Fr|Ra|Ac|Th|Pa|U|Np|Pu|Am|Cm|Bk|Cf|Es|Fm|Md|No|Lr|Rf|Db|Sg|Bh|Hs|Mt
现在,对于给定的单词,我想使用上面的regex模式从中提取元素。我现在面临的问题是
^{pr2}$我能提取
C,In,S
作为元素。这是我需要的不正确的提取
Cu, In, Se
而我得到的是“C,In,S”,我相信这是因为匹配模式在“Cu”之前看到“C”,在“Se”之前看到“S”(例如,当前的匹配模式是like)
C | In | S | Cu | Se
为了解决这个问题,我想,我必须通过搜索模式中的所有单词来确保regex匹配我单词中最大数量的字符。在
您还可以使用regex模块的命名列表:
另一个简单的方法
Online Demo
正确的方法是按长度的降序排列所有元素
这在docs中有清楚的解释
小纸条
考虑到输入字符串很长,我编写了一个小脚本,使其按长度的降序排序。可能对你有帮助
^{2}$相关问题 更多 >
编程相关推荐