2016-11-04 4 views
0

정규식을 파이썬에서 다시 사용하려고하는데 제대로 작동하지 않습니다. 내가 111.126.12.121, 111.126.12.135을 제외 할이문자열에 예외가있는 정규식

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

모든 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' 
>>> 

정상에

내가 추가 '\'전에 제안 '.' 때문에 '.' 개행을 제외한 모든 문자와 일치하는 특수 문자입니다.

관련 문제