2016-12-31 2 views
-2

3 일 동안 봇을 더 똑똑하게 만드려고했지만 정규 표현식을 작성하는 방법을 이해할 수 없습니다. 사용자의 메시지에서 검색을하고 답변을 보내고 싶습니다.전보 봇의 정규 표현식이 작동하지 않습니다.

import re 
@bot.message_handler(content_types=['text']) 
def handle_text(message): 
    if message.text == re.search(r'hello','Hello'): 
     bot.reply_to(message, "Welcome") 

이것은 작동하지 않지만 봇은 내 메시지를 무시합니다.

+0

입니다. 그건 말이되지 않습니다. 're.search (r'hello ','Hello ')는 None입니다. – jonrsharpe

+0

@jonrsharpe는'is None'을 검사하는 것은 파이썬 스타일이 아닙니다. ''re.search (...) ''만으로도 충분합니다. – Dmitry

+1

@DmitryFrolov 그것은'None'을 명시 적으로 테스트하기를 원할 때입니다 (예를 들어'' "', false-y도 평가합니다). 또한 나는 조건부로 제안하지는 않는다. 그런 함수 호출 **은 항상 ** None' (아마'! = message.text')으로 평가된다. – jonrsharpe

답변

1

당신이 re 설명서를 읽으십시오 - 그것의 사용은 시간에 아주 미묘한 될 수 있습니다.

나는 당신이하려고하는 것이 if message.text == "Hello" 함수를 실행한다고 가정 할 것이다. 그걸로 당신이 찾고있는 발췌 문장은

if re.search(r'Hello|hello', message.text): 
    #do things 
+0

Dammit, 30 초 늦었습니다! – ACascarino

+1

'if'가 파이썬 구문에 없습니다. – Dmitry

+0

흠. 괄호는 선택 사항이라는 것을 인정 하겠지만, 나는 틀린 문법이 아니었다는 인상을 받으면서 일했습니다. – ACascarino

1

ifre 표현이 이상합니다. 어떤 논리를 구현하고 싶습니까? 검사 할 경우 message.texthello 또는 Hello이 (정확하게) 당신이 사용해야 포함되어 있습니까 : 내가 처음 거라고

if re.search(r'hello|Hello', message.text): 
관련 문제