Ich habe einen regulären Ausdruck wie diesen:
regexp = u'ba[r|z|d]'
Die Funktion muss True zurückgeben, wenn das Wort bar , baz oder bad enthält . Kurz gesagt, ich brauche Regexp-Analog für Pythons
'any-string' in 'text'
Wie kann ich das realisieren? Vielen Dank!
bool(re.search('ba[rzd]', 'sometext'))
.Antworten:
quelle
xyz
) suchen und wissen möchte, welche Methode effizienter ist. Soll ich Python verwenden'xyz' in given_text
oder verwendenre.compile(r'xyz').search(given_text)
?[]
Klammern enthalten eine Zeichenklasse, daher stimmt Ihr Re auch überein: >>> word = 'ba |'; regexp.search (Wort) <_sre.SRE_Match-Objekt bei 0x101030b28>. Sie können alle Pipe-Symbole löschen.Das mit Abstand beste ist
Gibt True zurück
quelle
bool
. OP: "muss zurückkehren,True
wenn das Wort bar, baz oder bad enthält." Andere Antworten verwenden das Verhalten vonif
- automatische Konvertierung des Ausdrucks in sein Recht in abool
. zBimport re; rgx=re.compile(r'ba[rzd]'); rgx.search('foobar')
=><re.Match object; span=(2, 5), match='bar'>
, aberif(rgx.search(w)): print('y')
=>y
. Am nächsten an der Dokumentation der automatischen Konvertierung, die ich finden konnte ( archiviert )Match
Objekte sind immer wahr undNone
werden zurückgegeben, wenn keine Übereinstimmung vorliegt. Testen Sie einfach die Richtigkeit.Code:
Ausgabe =
bar
Wenn Sie
search
Funktionalität wünschenund wenn
regexp
nicht gefunden alsWie @bukzor erwähnt hat, wenn st =
foo bar
than match nicht funktioniert. Es ist also besser zu verwendenre.search
.quelle
search
eher alsmatch
. (Siehe docs.python.org/library/re.html#matching-vs-searching. ) Ich denke, es wäre hilfreich, wenn Sie tatsächlich mögliche Argumente in der richtigen Reihenfolge und nicht nur zeigen würden...
.st
zu"foo bar"
, wird die Match - Methode hier nicht arbeiten. Sie möchten suchen.in
undregex
?Hier ist eine Funktion, die macht, was Sie wollen:
Die Suchmethode für reguläre Ausdrücke gibt bei Erfolg ein Objekt zurück und None, 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:
quelle
Sie können so etwas tun:
Bei Verwendung der Suche wird ein SRE_match-Objekt zurückgegeben, wenn es mit Ihrer Suchzeichenfolge übereinstimmt.
Wenn nicht, wird None zurückgegeben
Und nur um es auszudrucken, um es erneut zu demonstrieren:
quelle