Ich habe einen regulären Ausdruck wie diesen:
regexp = u'ba[r|z|d]'
Die Funktion muss True zurückgeben, wenn Word Strich, Baz oder Bad enthält. Kurz gesagt, ich brauche regexp analog für Python
'any-string' in 'text'
Wie kann ich das realisieren? Vielen Dank!
import re
Word = 'fubar'
regexp = re.compile(r'ba[rzd]')
if regexp.search(Word):
print 'matched'
Das mit Abstand beste ist
bool(re.search('ba[rzd]', 'foobarrrr'))
Gibt True zurück
Match
Objekte sind immer wahr und None
wird zurückgegeben, wenn keine Übereinstimmung vorliegt. Einfach auf Richtigkeit prüfen.
Code:
>>> st = 'bar'
>>> m = re.match(r"ba[r|z|d]",st)
>>> if m:
... m.group(0)
...
'bar'
Ausgabe = bar
Wenn Sie search
Funktionalität wollen
>>> st = "bar"
>>> m = re.search(r"ba[r|z|d]",st)
>>> if m is not None:
... m.group(0)
...
'bar'
und wenn regexp
nicht gefunden als
>>> st = "hello"
>>> m = re.search(r"ba[r|z|d]",st)
>>> if m:
... m.group(0)
... else:
... print "no match"
...
no match
Wie @bukzor erwähnt, wenn st = foo bar
than match wird nicht funktionieren. Also, es ist angemessener, re.search
.
Hier ist eine Funktion, die das macht, was Sie wollen:
import re
def is_match(regex, text):
pattern = re.compile(regex, text)
return pattern.search(text) is not None
Die Suchmethode für reguläre Ausdrücke gibt bei Erfolg ein Objekt und None zurück, wenn das Muster nicht in der Zeichenfolge gefunden wird. In diesem Sinne geben wir True zurück, solange die Suche uns etwas zurückgibt.
Beispiele:
>>> is_match('ba[rzd]', 'foobar')
True
>>> is_match('ba[zrd]', 'foobaz')
True
>>> is_match('ba[zrd]', 'foobad')
True
>>> is_match('ba[zrd]', 'foobam')
False
Sie können so etwas tun:
Bei Verwendung der Suche wird ein SRE_match-Objekt zurückgegeben, wenn es mit Ihrer Suchzeichenfolge übereinstimmt.
>>> 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()
Wenn nicht, wird None zurückgegeben
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
n.group()
AttributeError: 'NoneType' object has no attribute 'group'
Und nur um es auszudrucken, um es noch einmal zu demonstrieren:
>>> print n
None