python – 最大化正则表达式中的子串匹配
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 最大化正则表达式中的子串匹配,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1145字,纯文字阅读大概需要2分钟。
内容图文
![python – 最大化正则表达式中的子串匹配](/upload/InfoBanner/zyjiaocheng/734/dccaff41fd1e4ed1aa4da52ab00237c5.jpg)
我想从一个单词中提取元素符号(如果存在).为此,我准备了一个正则表达式匹配模式,该模式由周期表中元素的所有符号组成.
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
现在,对于给定的单词,我想通过使用上面的正则表达式模式从中提取元素.我现在面临的问题是,对于像这样的词
CuIn2Se
我能够提取
C,In,S
作为要素.这是我需要的不正确的提取
Cu, In, Se
来自正则表达式,而我得到“C,In,S”,我相信其原因是匹配模式在“Se”之前看到“C”,在“Se”之前看到“S”(例如,当前匹配模式就好像)
C | In | S | Cu | Se
为了解决这个问题,我想,我必须通过搜索模式中的所有单词来确保正则表达式匹配单词中的最大字符数.
解决方法:
正确的方法是将所有元素按其长度递减顺序排列
>>> import re
>>> pat = re.compile('Cu|In|Se|C|S')
>>> s = 'CuIn2Se'
>>> pat.findall(s)
['Cu', 'In', 'Se']
这在docs中有清楚的解释
小笔记
鉴于您的输入字符串非常长,我编写了一个小脚本,使其按长度递减排序.它可能对你有所帮助
'|'.join(sorted(s.split('|'),key = len,reverse = True))
内容总结
以上是互联网集市为您收集整理的python – 最大化正则表达式中的子串匹配全部内容,希望文章能够帮你解决python – 最大化正则表达式中的子串匹配所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。