2
我正在運行Python 2.7,我目前在RE library上遇到了一些問題。 舉一個簡單的例子,在一個人的書面文件試圖數字時,我寫了這個正則表達式:這個數字匹配正則表達式不起作用嗎?
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
請將樣本數據作爲文本發佈。 –
我預計它會爲''1993年16月16日''輸出'None',併爲所有其他人匹配。在我的正則表達式的開始和結尾使用'^'和'$','re.match'似乎是我需要使用的。你有什麼建議? – Thrastylon
我會張貼這個'^(?:[] * [(])?(?:[] * [ - ])?(?:(?:[] * \ d)+(?:[] * [。 ,](?:[] * \ d [] *)*)?| [] * [。,](?:[] * \ d)+)(?:[] * [)]?$'if括號外沒有'--'。 – sln