如何找到正则表达式的化学式

时间:2013-03-13 20:22:06

标签: regex scientific-notation

这个问题可能不是特定的编程问题,但是,我试着在科学文本中找到H20,C02等化学式,我用它:

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

这有效 - 但现在也找到了'dot'之后的每个浮点数:

0.1234 -> 1234 is selected.

有机会阻止这种情况吗?提前谢谢!

2 个答案:

答案 0 :(得分:1)

您可能还包含一个negative lookbehind,以防止前一个点前面有一个数字:

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

答案 1 :(得分:1)

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

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

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