我试图建立一个正则表达式来捕获任何数字(整数,浮点数,或不带科学记数法)。即时通讯使用组,以便如果我需要更新的东西,我只更新一行。下面是我在做什么: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 –