2016-12-15 3 views
1

그래서 |으로 둘러싸인 문자열을 일치시켜야합니다. 따라서 패턴은 단순히 r"\|([^\|]*)\|"이되어야합니다. 맞습니까? 그럼에도 불구하고 : |로 시작하는 문자열에My regex는 regex101에서 작동하지만 파이썬에서는 작동하지 않습니까?

>>> pattern = r"\|([^\|]*)\|" 
>>> re.match(pattern, "|test|") 
<_sre.SRE_Match object at 0x10341dd50> 
>>> re.match(pattern, " |test|") 
>>> re.match(pattern, "asdf|test|") 
>>> re.match(pattern, "asdf|test|1234") 
>>> re.match(pattern, "|test|1234") 
<_sre.SRE_Match object at 0x10341df30> 

그것은 단지 일치하는거야? 그것은 regex101에서 잘 작동하며 이것은 중요하다면 Python 2.7입니다. 나는 아마 여기 뭔가 바보 일 뿐이므로 어떤 도움을 주시면 감사하겠습니다. 감사! , 일치하는 문자열의 시작 부분에서만 에 대한 re.match() 검사하는 동안 어디 문자열에서 일치 re.search() 검사 (이 펄 기본적으로 않는 것입니다) :

답변

2

re.match은 처음에서 시작하는 문자열과 일치 할 것입니다. 귀하의 경우, 일치하는 요소가 필요합니다. 맞습니까? 나는 내 부분에 벙어리 뭔가했다 알고

>>> re.search(pattern, " |test|").group(0) 
'|test|' 

>>> re.findall(pattern, " |test|") 
['test'] 
2

파이썬은 정규 표현식에 따라 두 가지 기본 작업을 제공합니다.

Document

+0

감사 :이 경우 당신은 문자열의 어느 곳이 일치하는 항목을 찾을 수 re.search 또는 re.findall 같은 것을 사용할 수 있습니다. –

+0

이 부분은 매우 혼란 스럽기 때문에이를 위해 문서를 작성합니다. –

관련 문제