【问题标题】: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,请参阅编辑 :)

标签: regex scientific-notation


【解决方案1】:

您还可以包含 negative lookbehind 以防止前面的点带有数字:

(?<=[\l\u.])(?<!\d\.)\d+

【讨论】:

  • 看起来这行得通!在我接受之前我会对其进行更多测试,但谢谢!
【解决方案2】:

如果您还想匹配H2OCH3CH2CH2CH3SiO2 等字符串,您可以使用:

(?i)\b[a-z]+(?:\d+[a-z]+)*\b

\b(?:[A-Z][a-z]?)+(?:\d+(?:[A-Z][a-z]?)+)*\b

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多