[PYTHON] Mémorandum slackbot ~ Demande utilisant des expressions régulières ~

introduction

Mémorandum de création d'un slackbot à l'aide de python Partie 3

Cela fait longtemps que [La dernière fois] 1 ...

Ne voyez-vous pas souvent un tel échantillon?

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

Au début, je l'ai utilisé sans penser "C'est comme ça!"

Cependant, quand j'y réfléchis attentivement, j'ai remarqué que l'intérieur de () est une expression régulière (lente).

J'ai donc eu un problème "je veux faire un tel respond_to", alors j'ai essayé de le résoudre avec une expression régulière!

Cette fois, j'ai essayé de résumer les expressions régulières

La description de l'article est la suivante

Qu'est-ce qu'une expression régulière en premier lieu?

Peut être utilisé avec PHP, Perl, Python, Ruby, etc.

Python a une bibliothèque ([re] 2) qui effectue des opérations telles que la recherche et le remplacement à l'aide d'expressions régulières. Cependant, comme il ne sera pas utilisé cette fois, l'explication est omise.

Si vous le souhaitez, voyez aussi [Expression régulière] 3 que j'ai résumé | д ゚)

Expressions régulières fréquemment utilisées

"Je veux que vous réagissiez aux lettres du début et de la fin de la phrase."

@respond_to("^Bonjour")  #Début de phrase
@respond_to("Bonsoir.$")  #Fin de phrase
def respond_func(message):
    message.react("+1")

sb_sample1.png

Utilisez ** ^ ** au début de la phrase et ** $ ** à la fin de la phrase Vous pouvez voir que cela correspond fermement!

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

sb_sample2.png

Combiner les deux résultats dans une expression régulière «exacte» Il ne répond pas seulement au mot "Bonjour"!

"Je veux que vous réagissiez au format de commande comme test 〇〇"


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

Expressions régulières que tout le monde aime

\s+Un ou plusieurs espaces (tabulations) \sUn caractère sauf pour les espaces (tabulations)

.*Tout caractère vaut 0 ou plus



 Est devenu
 Notez que sans \ S, même un seul espace (tabulation) réagira.

 ![sb_sample3.png][c]
 Vous pouvez également déplacer le bot comme une ligne de commande comme celle-ci!

# "Je veux que vous exécutiez le processus une seule fois, même avec plusieurs mots."

 J'ai d'abord trouvé ça
 * Mauvais exemple

```python
@listen_to("Comme c'est gentil")
@listen_to("bien")
@listen_to("good")
def reaction_func(message):
    message.react("+1")

La mauvaise chose à ce sujet est que si vous entrez quelque chose comme "Comme! Bon! Bon!", Il tournera trois fois.

sb_sample4.png

Bien sûr, vous ne pouvez pas attacher plusieurs mêmes réactions par vous-même, vous obtenez donc l'erreur déjà_réagie

Si vous utilisez une expression régulière, vous pouvez l'effacer sans difficulté!

@listen_to("Comme c'est gentil|bien|good")
def reaction_func(message):
    message.react("+1")

** | ** était une expression régulière signifiant "ou" (˘ω˘)

sb_sample5.png

Le processus s'est terminé sans lancer une erreur comme celle-ci!

"Je veux prendre plusieurs copies de manière variable."

Actuellement, une erreur mystérieuse est sous enquête en raison d'une vente importante ... <(_ _>)

en conclusion

Les expressions régulières ont balayé beaucoup de mes soucis! Récemment, j'utilise beaucoup les expressions régulières non seulement sur slackbot mais aussi dans les affaires.

C'est à cette époque que j'ai eu envie de devenir bientôt un maître des expressions régulières ...!

Recommended Posts

Mémorandum slackbot ~ Demande utilisant des expressions régulières ~
Mémorandum Slackbot (1)
Lors de l'utilisation d'expressions régulières en Python
[Python] Expressions régulières Expressions régulières
Pandas Python: recherchez DataFrame à l'aide d'expressions régulières
FizzBuzz avec des expressions régulières etc. sans utiliser l'opérateur '%'
Utiliser des expressions régulières en C
Extraire des nombres avec des expressions régulières
À propos de Python et des expressions régulières
Un mémorandum d'utilisation de eigen3