2013-03-13 49 views
2

化學公式這個問題可能不是一個特定的編程問題,但我試圖找到化學公式像H20,C02等在scientic文本和我用這個:如何找到與正則表達式

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

這作品 - 但現在也發現'點'後的每個浮點數:

0.1234 -> 1234 is selected. 

是否有機會防止這種情況?提前致謝!

+0

也許從t中刪除點他向後看? – Bergi 2013-03-13 20:25:06

+3

你究竟想要匹配什麼? SMILES格式化的字符串?你能提供一些例子嗎? – woemler 2013-03-13 20:25:31

+0

只是像H20或SO2的化學公式,請參閱編輯:) – Rockbot 2013-03-13 20:36:26

回答

1

您還可能包括negative lookbehind防止以數字在前點前:

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

它看起來像這樣的作品!在我接受之前,我會給它更多的測試,但是謝謝! – Rockbot 2013-03-13 20:39:40

1

如果你想也匹配像H2O字符串,CH3CH2CH2CH3SiO2你可以使用:

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

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