我試圖建立一個正則表達式來捕獲任何數字(整數,浮點數,或不帶科學記數法)。即時通訊使用組,以便如果我需要更新的東西,我只更新一行。下面是我在做什麼:Python正則表達式命名組
intNumber = r"(?P<Integer>-?(0|[1-9]+[0-9]*))" # Integer
floatNumber = r"(?P<Float>"+intNumber+r"\.[0-9]+)" # Float
sciNumber = r"(?P<Scientific>"+floatNumber+r"(e|E)(-|\+)?[0-9]+)" # Scientific
anyNumber = r"(?P<AnyNumber>"+sciNumber+"|(?P=Integer)|(?P=Float))" # Any number
的問題是,雖然每個正則表達式的工作對自己,當我使用或結合他們都在anyNumber
(|
)它抓住了唯一的科學記數法表示,而不是休息。我究竟做錯了什麼?
編輯:要優化我的問題,是有可能有一個動態生成的正則表達式(與記簡單的單點維護的目的),也具有足夠的靈活性,讓我單獨使用其組成部分,沒有問題像重新定義組和方便地命名組?我知道我可能會問太多..
嘗試http://ideone.com/fu9eOy –