以下是一段文字,我有:在正則表達式,捕獲一兩件事,或另一個,或兩者
G1 13.00
G1 3.00
0.00
27C
我想使用正則表達式來捕獲一組是一個字母數字代碼(G1或27C)或另一組是float(xx.xx),或兩者兼而有之。
對於這個例子,我想這個特定的返回:
(G1,13.00)
(G1,3.00)
(,0.00)
(27C,)
這是最接近的解決方案,我有:
\(?:(\w+) +(\d+\.\d+))|(?: +(\d+\.\d+))|(?: +(\w+))\
這種解決方案的問題是,在最後2箇中的值被捕獲在第3和第4組中:
(G1,13.00,,)
(G1,3.00,,)
(,,0.00,)
(,,,27C)
有關如何解決它的任何想法?
我發現這個問題,這是接近:In a regular expression, match one thing or another, or both但它回答如何匹配而不是捕獲。
在PyPI正則表達式模塊,您可以使用'(?|(\ w +)+(\ d + \。\ d +)| +(\ d + \。\ d +)| +( \ w +))' –