0
我想在Python中使用正則表達式與re,但它不能正常工作。與字符串排除正則表達式
進出口檢驗這個
re.match("111.126.1(2.(12[^1]|13[^5])|(3.(1([.^78]))))", "111.126.13.178")
我想排除111.126.12.121
,111.126.12.135
和所有111.125.13.1[78]X
有什麼建議?
我想在Python中使用正則表達式與re,但它不能正常工作。與字符串排除正則表達式
進出口檢驗這個
re.match("111.126.1(2.(12[^1]|13[^5])|(3.(1([.^78]))))", "111.126.13.178")
我想排除111.126.12.121
,111.126.12.135
和所有111.125.13.1[78]X
有什麼建議?
首先刪除點[^ 78]
而且你的正則表達式不能匹配「111.126.14.XXX」或「111.127.XX.XXX」等。
>>> a=re.match("111.126.1(2.(12[^1]|13[^5])|(3.(1([^78]))))", "111.126.14.178")
>>> a
>>>
你可以使用:
>>> a=re.match("111.126.1(2.(12[^1]|13[^5])|(3.(1([^78])))|([^23].*))", "111.126.14.178")
>>> a
<_sre.SRE_Match object at 0x10748abe8>
>>> a.group(0)
'111.126.14.178'
>>>
和正常的,我建議你之前加上'\ ''因爲'。'是一種特殊字符,可以匹配除換行符以外的任何字符。
在'[。^ 78]'中有一個虛假點。 – Bentoy13
要匹配「5」以外的數字,請使用[0-46-9]'。等等。 '[^ 5]'匹配';','%',除了'5'以外的任何字符。請注意,'re.match'只在字符串的開始處錨定搜索。在模式的末尾使用'$'來將它錨定在最後。不知道你最後想要什麼,試試'^ 111 \ .126 \ .1(2 \。(12 [02-9] \ d?| 13 [0-46-9] \ d?)|(3 \ 。(1([0-69])\ d?)))$' –
感謝您的答覆,是點,現在按我的意願工作! – PenDragon