2014-04-17 2 views
1

그래서 숫자가 정수인지 알리는 정규 표현식을 사용합니다.Python의 정규식에서 n을 무시하는 방법은 무엇입니까?

regex = '^(0|[1-9][0-9]*)$'

import re 
bool(re.search(regex, '42\n')) 

True를 반환하고,이 아닌가요? 어디에서 문제가 발생합니까? documentation에서

+0

[여러 줄에 걸쳐있는 파이썬 정규식] (http://stackoverflow.com/questions/1870954/python-regular-expression-across-multiple-lines) – Chris

+0

거기에 무엇이 머물러 있지 않은지 완전히 알아보십시오. – user253956

+0

나는 그것이 그것의 중복이라고 생각하지 않는다. 해결책은 다릅니다. 게다가, 그 질문은 명확하지 않습니다. –

답변

2

:

'$'

은 문자열의 끝과 일치하거나 문자열의 끝에서 줄 바꿈하기 전에

대신 \Z을보십시오.

또한, 언제든지 당신이 ^ 또는 \A로 시작하고 $ 또는 \Z로 끝나는 정규 표현식을 작성하는 자신을 발견 할 의도는 전체 문자열과 일치하는 경우, 당신은 아마 대신 re.searchre.match를 사용 (및 생략한다 regex의 경계 마커).

+0

실제로 일했습니다. 고마워요! – user253956

0

정규식 수 ahould regex = '\b^(0|[1-9][0-9]*)$\b'

0

질문 경기에서 정규식 -> 라인, 숫자의 시작과 라인의 끝. 그리고 주어진 문자열은 그것과 일치합니다. 왜 그것이 사실로 돌아가고 있는지. 숫자가있을 때 False를 반환하려면 "!"을 사용할 수 있습니다. NOT을 나타냅니다.

는 참조 https://docs.python.org/2/library/re.html

regex = '!(0|[1-9][0-9]*)$' 
bool(re.search(regex, '42\n')) => (Returns false) 
관련 문제