2013-01-24 7 views
0

주어진 숫자로 시작하는 문자열인지 확인하는 프로그램을 작성하고 싶습니다. 우리는 문자열이 line = "5p.m. its a lovely time for tea!"과 인데 사용자로부터 숫자를 읽고 줄이 사용자가 넘은 숫자로 시작하는지 확인하고 싶습니다.주어진 숫자로 시작하는 정규식을 작성하는 방법은 무엇입니까?

내가 좋아하는 뭔가를하고 싶은 (여기에 몇 가지 실수있을 수 있습니다) : 같은

s = compile(r"^[\<%\>]", num) 
m = s.search(line) 

또는

s = compile(r"^[\<%\>]", num) 
m = s.search(line) 

와 사용자가 5를 통과 할 때, 그것은 "OK"출력 할 것이다 또는 뭔가 라인 이 5로 시작하거나, 내 라인이 다른 번호로 시작하면 "안된다". 이 모든 정규식 일에 임 매우 초보자는, 도와주세요 :) 내가 C 모두 코드를 받아 ++과 파이썬)

+0

C++ 응답 또는 Python 응답을 원하십니까? 당신은 두 개의 프로그래밍 언어가 관련이 없으면 태그를 붙여서는 안된다. 주석에서 C++ 응답을 보았는데, 왜이 질문을 파이썬으로 태그를 붙 였는가? –

+0

나는 잠재적 인 혼란을 해결하기 위해 C++ 태그를 제거하는 것이 우리에게 공정하다고 생각한다. (그러나 여기서 downvote는 정당하다고 생각하지 않는다.) –

답변

5

정규식은 과잉이다 : 당신이 regex를 사용해야하는 경우

line = '5p.m. its a lovely time for tea!' 
num = raw_input() # integer input 
if line.startswith(num): 
    print 'OK' 
else: 
    print 'It\'s not OK' 

을 수행 할 수 있습니다 이 :

if re.search('^%s' %num, line): # checks if there is a match 
    print 'OK' 
else: 
    print 'It\'s not OK' 

이 일치하는 경우 re.search 부울 컨텍스트에서 _sre.SRE_Match objectTrue로 평가됩니다 반환하기 때문이다 작동하는 이유. 일치하는 항목이 없으면 NoneFalse으로 평가됩니다.

+0

그래, 나는 이것을 할 수 있지만 불행히도, 나는 정규식으로 그것을 할 필요가있어 : – yak

1
import re 
number = 5 
line = "5p.m. its a lovely time for tea!" 
s = compile("^%d" % num) 
m = s.search(line) 

if m: 
    print "time for tea" 
+0

어쩌면 당신은 부스트와 C + +에서 동일한 일을 어떻게 알아? – yak

+0

@yak 또는 C++ 0x –

2

내가 다 모르는 ++과 파이썬이 하지만 당신이 원하는 정규식 코딩은

^(\d).* 

당신이

PS 결과 확인 http://regexpal.com/를 사용할 수 있습니다. 죄송합니다 내가 이미지를 게시하려고하지만 그들은 너무 이상 http://i.stack.imgur.com/qwBjJ.png

+0

'^ \ d'와 함께 제공되는 정규식 포함을 시도해 보는 것으로 충분합니다. '^ (\ d)'는 숫자를 캡처하기에 충분합니다. – nhahtdh

0
import re 

line = "5p.m. its a lovely time for tea!" 

match_obj = re.search('^([0-9]+).*', line) 

num = raw_input() 

if num == match_obj.groups()[0]: 

    print "OK" 

else: 

    print r"It's not ok" 
0

내가 응답을 에코 것이라고 볼 수있는 링크를 클릭 허용하지 않습니다 : 정규식이 문제에 대한 과잉이다. 위에 언급 된 startswith를 사용하십시오.

관련 문제