Extrahieren von ganzen Wörtern

Habe ich eine große Menge von real-Welt text, den ich ziehen müssen Wörter aus der Eingabe in eine Rechtschreibprüfung. Ich möchte zu extrahieren, wie viele sinnvolle Wörter wie möglich, ohne zu viel Lärm. Ich weiß, es gibt viele regex-ninjas hier in der Nähe, so dass ich hoffe, jemand kann mir helfen.

Derzeit bin ich die Extraktion aller alphabetische Sequenzen mit '[a-z]+'. Dies ist ein guter Näherungswert, aber es schleppt eine Menge Müll mit.

Ideal möchte ich einige regex (muss nicht schön oder effizient), dass Extrakte alle alphabetischen Sequenzen, getrennt durch Natürliche Trennzeichen (wie [/-_,.: ] etc.), und ignoriert eine alphabetische Sequenzen mit illegalen Grenzen.

Aber ich würde auch gerne nur in der Lage sein, um alle alphabetischen Sequenzen, die NICHT benachbart SIND, um eine Anzahl. So zum Beispiel 'pie21' würde NICHT extrahieren 'pie', aber 'http://foo.com' extrahiert ['http', 'foo', 'com'].

Versuchte ich lookahead und lookbehind Behauptungen, aber Sie waren pro-Zeichen (also zum Beispiel re.findall('(?<!\d)[a-z]+(?!\d)', 'pie21') zurückkehren würde 'pi' wenn ich will, dass es nichts zurück). Ich habe versucht, das einwickeln der alpha Teil, wie ein Begriff ( (?:[a-z]+) ), aber es hat nicht geholfen.

Detail: Der Daten wird eine E-Mail-Datenbank, so ist es meist einfach Englisch mit normalen zahlen, aber gelegentlich gibt es Müll Zeichenfolgen wie GIHQ4NWL0S5SCGBDD40ZXE5IDP13TYNEA und AC7A21C0 dass ich gerne komplett ignorieren. Ich gehe davon aus, dass alle alphabetischen Reihenfolge mit einer Zahl, es ist Quatsch.

  • Besser verwenden Sie raw-strings mit regexes. \d passiert, zu arbeiten, aber auch andere escape-Sequenzen werden scheitern, und das kann schwer sein, zu Debuggen.
InformationsquelleAutor orlade | 2011-04-19
Schreibe einen Kommentar