什么在这个匹配正则表达式的数字中不起作用?

时间:2016-05-10 15:25:15

标签: python regex python-2.7

我正在运行Python 2.7,目前我遇到了linking table的问题。 举个简单的例子,当在人类书面文档上尝试数字时,我写了这个正则表达式:

import re
number = r'^[(]?([-]?([ ]?\d[ ]?)+)|([-]?([ ]?\d[ ]?)+[.,]([ ]?\d[ ]?)*)[)]?$'

这应该匹配数字与昏迷,点和空白,因为人类并不总是很好地格式化它,有或没有-()

即使它们没有进行优化,我也希望以下表达式能够正常工作,但它们显然不会像我们在屏幕截图中看到的那样。

ex1 = r'^[(]?([-]?([ ]?\d[ ]?)+)|([-]?([ ]?\d[ ]?)+[.,]([ ]?\d[ ]?)*)[)]?$'
ex2 = r'^(\()?(-)?( ?\d ?)*[.,]?( ?\d ?)*(\))?$'
ex3 = r'^[(]?(-)?( ?\d ?)*[.,]?( ?\d ?)*[)]?$'

RE library

输入:

import re

print "1st example :"
number = r'^[(]?([-]?([ ]?\d[ ]?)+)|([-]?([ ]?\d[ ]?)+[.,]([ ]?\d[ ]?)*)[)]?$'
print re.match(number, "16 juillet 1993")

print "\n2nd example :"
number = r'^(\()?(-)?( ?\d ?)*[.,]?( ?\d ?)*(\))?$'
print re.match(number, "16 juillet 1993")
print re.match(number, "161993")
print re.match(number, "-1619,93")
print re.match(number, "-( 9 9 . 3 )")

print "\n3rd example :"
number = r'^[(]?(-)?( ?\d ?)*[.,]?( ?\d ?)*[)]?$'
print re.match(number, "-( 9 9 . 3 )")

输出:

1st example :
<_sre.SRE_Match object at 0x103da5480>

2nd example :
None
<_sre.SRE_Match object at 0x103da5480>
<_sre.SRE_Match object at 0x103da5480>
None

3rd example :
None

1 个答案:

答案 0 :(得分:0)

尝试:number=r'^-?\(?( ?\d ?)+[.,]?( ?\d ?)*\)?$' 在这里,-位于( )的一边。 如果您想要-内的匹配( ),请使用: number=r'^\(?-?( ?\d ?)+[.,]?( ?\d ?)*\)?$'

如果您想在字符串中使用匹配括号( ),则应通过\将其转义。