[PYTHON] Slackbot Memorandum ~ Anfrage mit regulären Ausdrücken ~

Einführung

Memorandum zum Erstellen eines Slackbots mit Python Teil 3

Es ist lange her seit [Letztes Mal] 1 ...

Sehen Sie eine solche Probe nicht oft?

@respond_to("^test\s+\S.*")

Zuerst habe ich es benutzt, ohne zu denken "Es ist so!"

Als ich jedoch sorgfältig darüber nachdachte, bemerkte ich, dass das Innere von () ein regulärer Ausdruck ist (langsam).

Also hatte ich ein Problem "Ich möchte so eine Antwort machen", also habe ich versucht, es mit einem regulären Ausdruck zu lösen!

Diesmal habe ich versucht, die regulären Ausdrücke zusammenzufassen

Die Artikelbeschreibung lautet wie folgt

Was ist überhaupt ein regulärer Ausdruck?

Kann mit PHP, Perl, Python, Ruby usw. verwendet werden.

Python verfügt über eine Bibliothek ([re] 2), die Operationen wie Suchen und Ersetzen mit regulären Ausdrücken ausführt. Da es diesmal jedoch nicht verwendet wird, wird die Erklärung weggelassen.

Wenn Sie möchten, lesen Sie bitte auch [Regulärer Ausdruck] 3, den ich zusammengefasst habe | д ゚)

Häufig verwendete reguläre Ausdrücke

"Ich möchte, dass du auf die Buchstaben am Anfang und Ende des Satzes reagierst."

@respond_to("^Guten Morgen")  #Satzanfang
@respond_to("Guten Abend.$")  #Ende des Satzes
def respond_func(message):
    message.react("+1")

sb_sample1.png

Verwenden Sie ** ^ ** am Satzanfang und ** $ ** am Ende des Satzes Sie können sehen, dass es fest korrespondiert!

@respond_to("^Hallo$"):
def respond_func(message):
    mes = message.body["text"]
    message.send(mes)

sb_sample2.png

Die Kombination der beiden führt zu einem regulären Ausdruck "exakte Übereinstimmung" Es reagiert nicht nur auf das Wort "Hallo"!

"Ich möchte, dass Sie wie test 〇〇 auf das Befehlsformat reagieren."


@listen_to("^repeat\s+\S.*")
def repeat_func(message):
    rep_str = message.body["text"][7:]
    message.send(rep_str)

Reguläre Ausdrücke, die jeder liebt

\s+Ein oder mehrere Leerzeichen (Tabulatoren) \sEin Zeichen außer Leerzeichen (Tabulatoren)

.*Jedes Zeichen ist 0 oder mehr



 Wurde
 Beachten Sie, dass ohne \ S sogar ein einzelnes Leerzeichen (Tabulator) reagiert.

 ![sb_sample3.png][c]
 Sie können den Bot auch wie eine Befehlszeile wie diese bewegen!

# "Ich möchte, dass Sie den Prozess auch mit mehreren Wörtern nur einmal ausführen."

 Ich habe mir das zuerst ausgedacht
 * Schlechtes Beispiel

```python
@listen_to("Wie schön")
@listen_to("gut")
@listen_to("good")
def reaction_func(message):
    message.react("+1")

Das Schlechte daran ist, dass wenn Sie etwas wie "Gefällt mir! Gut! Gut!" Eingeben, es sich dreimal dreht.

sb_sample4.png

Natürlich können Sie nicht mehrere gleiche Reaktionen selbst anhängen, daher erhalten Sie den Fehler "bereits reagiert"

Wenn Sie einen regulären Ausdruck verwenden, können Sie ihn problemlos löschen!

@listen_to("Wie schön|gut|good")
def reaction_func(message):
    message.react("+1")

** | ** war ein regulärer Ausdruck mit der Bedeutung "oder" (˘ω˘)

sb_sample5.png

Der Vorgang wurde ohne einen solchen Fehler abgeschlossen!

"Ich möchte mehrere Kopien auf variable Weise erstellen."

Derzeit wird ein mysteriöser Fehler aufgrund eines großen Verkaufs untersucht ... <(_ _>)

abschließend

Reguläre Ausdrücke haben viele meiner Sorgen weggeblasen! In letzter Zeit verwende ich häufig reguläre Ausdrücke, nicht nur für Slackbot, sondern auch für Unternehmen.

Ungefähr zu dieser Zeit wollte ich bald ein Meister des regulären Ausdrucks werden ...!

Recommended Posts

Slackbot Memorandum ~ Anfrage mit regulären Ausdrücken ~
Slackbot-Memorandum (1)
Bei Verwendung regulärer Ausdrücke in Python
[Python] Reguläre Ausdrücke Reguläre Ausdrücke
Python-Pandas: Suchen Sie mit regulären Ausdrücken nach DataFrame
FizzBuzz mit regulären Ausdrücken usw. ohne Verwendung des Operators '%'
Verwenden Sie reguläre Ausdrücke in C.
Zahlen mit regulären Ausdrücken extrahieren
Über Python und reguläre Ausdrücke
Ein Memorandum zur Verwendung von eigen3