2016-11-04 91 views
0

我想在Python中使用正則表達式與re,但它不能正常工作。與字符串排除正則表達式

進出口檢驗這個

re.match("111.126.1(2.(12[^1]|13[^5])|(3.(1([.^78]))))", "111.126.13.178") 

我想排除111.126.12.121111.126.12.135和所有111.125.13.1[78]X

有什麼建議?

+0

在'[。^ 78]'中有一個虛假點。 – Bentoy13

+1

要匹配「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?)))$' –

+0

感謝您的答覆,是點,現在按我的意願工作! – PenDragon

回答

0

首先刪除點[^ 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' 
>>> 

和正常的,我建議你之前加上'\ ''因爲'。'是一種特殊字符,可以匹配除換行符以外的任何字符。