finden eine genaue übereinstimmung für die Zeichenfolge
Ich habe folgende Funktion zu finden, die genau die Wörter in einer Zeichenfolge.
def exact_Match(str1, word):
result = re.findall('\\b'+word+'\\b', str1, flags=re.IGNORECASE)
if len(result)>0:
return True
else:
return False
exact_Match(str1, word)
Aber ich bekommen eine genaue übereinstimmung für beide Wörter "award" und "award-winning" wenn es nur sein sollte-award-Gewinner für die folgende Zeichenfolge.
str1 = "award-winning blueberries"
word1 = "award"
word2 = "award-winning"
Wie bekomme ich es so wieder.findall passen ganze Wörter mit Bindestriche und andere Satzzeichen?
InformationsquelleAutor lost9123193 | 2013-05-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Machen Sie Ihre eigenen Wort-Grenze:
copy-paste von hier zu meinem Dolmetscher:
Eigentlich das casting zu
bool
ist unnötig und nicht an allen hilft. Die Funktion ist ohne besser dran:Hinweis:
exact_Match
ist ziemlich unkonventioneller Gehäuse. nenne es einfach exact_match.hast du wahrscheinlich nicht den code kopieren oder einige Veränderungen vorgenommen. Es funktioniert für mich, und ich habe es kopiert von hier.
InformationsquelleAutor Elazar
Das problem mit der ersten Methode ist, dass
'\\b'
nicht bezeichnen die null-Breite assertion suchen, die Sie suchen. (Und wenn es das täte, würde ichr'\b'
statt, weil die backslashes richtig lästig werden kann in regulären Ausdrücken - finden Sie unter diesem link)Vom Regular Expression HOWTO
\b
Word boundary. This is a zero-width assertion that matches only at the beginning or end of a word. A word is defined as a sequence of alphanumeric characters, so the end of a word is indicated by whitespace or a non-alphanumeric character.
Weil
-
ist ein nicht-alphanumerisches Zeichen, Ihre findall regulären Ausdruck findenaward
imaward-wining
aber nicht inawards
.Je nach den gesuchten Satz, ich würde auch denken, der mit
re.findall
stattre.match
wie vorgeschlagen von Elazar. In deinem Beispielre.match
funktioniert, aber wenn das Wort, das Sie suchen, verschachtelte überall über den Anfang der Zeichenkette,re.match
wird nicht gelingen.InformationsquelleAutor Gronk