2011-04-21 5 views
2
([0-9a-zA-Z_\-]+)/?([^.\/]+)[\.php|\.html] 

이 표현식의 경우 'people'문자열과 'person'문자열은 왜 왜 일치하지 않습니까?정규 표현식 일치

+4

당신이 요구하는지에 대한 자세한 명확 수 : 코멘트에 개정 된 질문에 대한


? – David

+2

그는 "문자열 '사람들'이 일치하고 '사람'이 일치하지 않는 이유 '를 의미한다고 생각합니다. –

+1

... 죄송합니다. 뭐라 구요? 처음에는 완전한 문장을 시도해보십시오. >. < –

답변

3

대괄호 안의 내용은 괄호 안에 있어야하므로 'people'은 대괄호 안에 'l'까지 일치 시키지만 'person'은 대괄호 안에 문자가 없습니다.

강제로 .php 또는 .html과 일치하지 않으려면 물음표와 함께 따라야합니다. ([0-9a-zA-Z_-]+)/?([^.\/]+)(.php|.html)?

>>> p='([0-9a-zA-Z_\-]+)/?([^.\/]+)(\.php|\.html)?' 
>>> p=re.compile(p) 
>>> p.match('person') 
<_sre.SRE_Match object at 0x9bac0c0> 
>>> p.match('people') 
<_sre.SRE_Match object at 0x9bac2f0> 
>>> p.match('people').group() 
'people' 
>>> p.match('person').group() 
'person' 

이 실제로 일치하는 정규 표현식의 어떤 부분 보려면 match.group() 함수, 또는 당신의 마음에 드는 언어로 이에 상응하는 도구를 사용하여 여기

는 가능한 개정 정규식입니다. 그것은 아주 밝게 빛날 수 있습니다.

>>> p=re.compile('([0-9a-zA-Z_\-]+)(|\.html|\.php)$') 
>>> p.match('ddd').group() 
'ddd' 
>>> p.match('ddd.html').group() 
'ddd.html' 
>>> p.match('ddd.jpeg').group() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'NoneType' object has no attribute 'group' 
+0

안녕하세요. 고마워. 나는 실제로 '사람'과 '사람'을 모두 만들고 싶어. – fuminlu

+0

그들은 둘 다 정규식에서 위에서 수정 한대로 처리합니다. –

+0

오케이, 알겠습니다. – fuminlu