我正在运行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 ?)*[)]?$'
输入:
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
答案 0 :(得分:0)
尝试:number=r'^-?\(?( ?\d ?)+[.,]?( ?\d ?)*\)?$'
在这里,-
位于( )
的一边。
如果您想要-
内的匹配( )
,请使用:
number=r'^\(?-?( ?\d ?)+[.,]?( ?\d ?)*\)?$'
如果您想在字符串中使用匹配括号( )
,则应通过\
将其转义。