2016-12-31 10 views
-2

私はボットをスマートにしようと3日を要しましたが、正規表現を書く方法を理解できません。Telegramボットの正規表現は機能しません

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'はPythonスタイルではありません。単純な 'if 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'はPythonの構文ではありません。 – Dmitry

+0

Hmm。括弧は省略可能ですが、私は常に誤った構文ではないという印象を受けました。 – ACascarino

1

あなたifreの表現が奇妙です。どのようなロジックを実装したいですか?あなたがチェックしたい場合はmessage.textはあなたが使用する必要があります(正確に)helloまたはHelloを含まない:

if re.search(r'hello|Hello', message.text): 
関連する問題