J'ai une expression régulière comme celle-ci:
regexp = u'ba[r|z|d]'
La fonction doit renvoyer True si le mot contient bar , baz ou bad . En bref, j'ai besoin d'analogues de regexp pour Python
'any-string' in 'text'
Comment puis-je m'en rendre compte? Merci!
bool(re.search('ba[rzd]', 'sometext'))
.Réponses:
la source
xyz
) et je veux savoir quel est le moyen le plus efficace de le faire, dois-je utiliser python'xyz' in given_text
ou utiliserre.compile(r'xyz').search(given_text)
?[]
crochets contiennent une classe de caractères, donc votre re correspond également à: >>> mot = 'ba |'; regexp.search (mot) <objet _sre.SRE_Match à 0x101030b28>. Vous pouvez supprimer tous les symboles de tuyau.Le meilleur est de loin
Renvoie True
la source
bool
. OP: "doit retournerTrue
si le mot contient bar, baz ou mauvais." D'autres réponses utilisent le comportement deif
- convertir automatiquement l'expression à sa droite en abool
. par exempleimport re; rgx=re.compile(r'ba[rzd]'); rgx.search('foobar')
=><re.Match object; span=(2, 5), match='bar'>
, maisif(rgx.search(w)): print('y')
=>y
. La documentation la plus proche de la conversion automatique que j'ai pu trouver ( archivée )Match
objets sont toujours vrais etNone
sont renvoyés s'il n'y a pas de correspondance. Testez simplement la justesse.Code:
Sortie =
bar
Si vous voulez des
search
fonctionnalitéset si
regexp
non trouvé queComme @bukzor l'a mentionné, si st =
foo bar
que match ne fonctionnera pas. Donc, il est plus approprié d'utiliserre.search
.la source
search
plutôt quematch
. (Voir docs.python.org/library/re.html#matching-vs-searching. ) De plus, je pense qu'il serait utile que vous montriez les arguments réels possibles, dans le bon ordre, plutôt que simplement...
.st
en"foo bar"
, la méthode de correspondance ne fonctionnera pas ici. Vous voulez une recherche.in
etregex
?Voici une fonction qui fait ce que vous voulez:
La méthode de recherche d'expression régulière renvoie un objet en cas de succès et None si le modèle n'est pas trouvé dans la chaîne. Dans cet esprit, nous retournons True tant que la recherche nous donne quelque chose en retour.
Exemples:
la source
Vous pouvez faire quelque chose comme ceci:
L'utilisation de la recherche renverra un objet SRE_match, s'il correspond à votre chaîne de recherche.
Sinon, il retournera Aucun
Et juste pour l'imprimer pour le démontrer à nouveau:
la source