2013-01-19 2 views
0

이 정규식 <li>.*end이 정규식 은 내가 잘못하고있는 것에 대해 작동하지 않습니까?여러 텍스트가 포함 된 정규식 쓰기 n

텍스트

<li>asdsadasd 
adssadasdasdasdas 
asdasdasdasdasdad 
adsasdasdasdasd 
dasdadadsadadasdasdasdasda 
end 

누군가가 나에게 모든 텍스트를 잡기 위해 정규식을 작성 도와 드릴까요?

+0

비슷한 질문이 http://stackoverflow.com/q/7173171/1328439 전에 여기에서 요청되었습니다. 솔루션에 사용 된 .DOTALL 옵션에 유의하십시오. –

답변

4

기본적으로 .은 개행과 일치하지 않습니다. - $^의 동작을 변경 아니 re.MULTILINE 플래그 : 당신은 ...

regex = re.compile('<li>.*end', re.DOTALL) 

또는 동등

regex = re.compile('<li>.*end(?S)') 

편집을 DOTALL 플래그를 통과해야합니다.

2

당신은 re에서 여러 옵션을 선택해야합니다 : 당신은 동일 re.DOTALL 대신 re.M/re.MULTILINE를 사용하는 $^의 동작을 필요로하는 경우

import re 
expr = re.comile("<li>.*end", re.M) 

는 의견과 디트리히의 대답을 고려.

+1

MULTILINE이 아닌 DOTALL 모드 ('re.S')를 원합니다. [Dietrich (업데이트 된) 답변] (http://stackoverflow.com/a/14417309/20938) –

+0

+1 지적 해 주셔서 감사합니다. 이 정보를 답에 추가했습니다. – Rubens

관련 문제