J'ai une expression régulière comme celle-ci:
regexp = u'ba[r|z|d]'
La fonction doit retourner True si le mot contient bar, baz ou bad. En bref, j'ai besoin de regexp analog pour Python
'any-string' in 'text'
Comment puis-je le réaliser? Merci!
import re
Word = 'fubar'
regexp = re.compile(r'ba[rzd]')
if regexp.search(Word):
print 'matched'
Le meilleur de loin est
bool(re.search('ba[rzd]', 'foobarrrr'))
Renvoie vrai
Les objets Match
sont toujours vrais et None
est renvoyé s'il n'y a pas de correspondance. Juste tester la véracité.
Code:
>>> st = 'bar'
>>> m = re.match(r"ba[r|z|d]",st)
>>> if m:
... m.group(0)
...
'bar'
Sortie = bar
Si vous voulez la fonctionnalité search
>>> st = "bar"
>>> m = re.search(r"ba[r|z|d]",st)
>>> if m is not None:
... m.group(0)
...
'bar'
et si regexp
non trouvé que
>>> st = "hello"
>>> m = re.search(r"ba[r|z|d]",st)
>>> if m:
... m.group(0)
... else:
... print "no match"
...
no match
Comme @bukzor a mentionné si st = foo bar
que match ne fonctionnera pas. Donc, il est plus approprié d'utiliser re.search
.
Voici une fonction qui fait ce que vous voulez:
import re
def is_match(regex, text):
pattern = re.compile(regex, text)
return pattern.search(text) is not None
La méthode de recherche d'expression régulière retourne un objet en cas de succès et None si le modèle n'est pas trouvé dans la chaîne. Gardant cela à l’esprit, nous retournons Vrai tant que la recherche nous donne quelque chose en retour.
Exemples:
>>> is_match('ba[rzd]', 'foobar')
True
>>> is_match('ba[zrd]', 'foobaz')
True
>>> is_match('ba[zrd]', 'foobad')
True
>>> is_match('ba[zrd]', 'foobam')
False
Vous pouvez faire quelque chose comme ça:
L'utilisation de la recherche renvoie un objet SRE_match, s'il correspond à votre chaîne de recherche.
>>> import re
>>> m = re.search(u'ba[r|z|d]', 'bar')
>>> m
<_sre.SRE_Match object at 0x02027288>
>>> m.group()
'bar'
>>> n = re.search(u'ba[r|z|d]', 'bas')
>>> n.group()
Sinon, il retournera Aucun
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
n.group()
AttributeError: 'NoneType' object has no attribute 'group'
Et juste pour l'imprimer pour démontrer à nouveau:
>>> print n
None