如何使用正则表达式查找化学式
Posted
技术标签:
【中文标题】如何使用正则表达式查找化学式【英文标题】:How to find chemical formulas with regex 【发布时间】:2013-03-13 20:22:05 【问题描述】:这个问题可能不是一个特定的编程问题,但我尝试在科学文本中找到 H20、C02 等化学公式,然后我使用这个:
(?<=[\l\u]|\.)\d+
这可行 - 但现在也可以找到“点”之后的每个浮点数:
0.1234 -> 1234 is selected.
有没有机会阻止这种情况?提前致谢!
【问题讨论】:
也许从后面删除点? 你到底想匹配什么? SMILES 格式的字符串?你能提供一些例子吗? 只是化学式,如 H20 或 SO2,请参阅编辑 :) 【参考方案1】:您还可以包含 negative lookbehind 以防止前面的点带有数字:
(?<=[\l\u.])(?<!\d\.)\d+
【讨论】:
看起来这行得通!在我接受之前我会对其进行更多测试,但谢谢!【参考方案2】:如果您还想匹配H2O
、CH3CH2CH2CH3
、SiO2
等字符串,您可以使用:
(?i)\b[a-z]+(?:\d+[a-z]+)*\b
或
\b(?:[A-Z][a-z]?)+(?:\d+(?:[A-Z][a-z]?)+)*\b
【讨论】:
以上是关于如何使用正则表达式查找化学式的主要内容,如果未能解决你的问题,请参考以下文章