Frage

Wie umschreiben ich diese neue Art und Weise Adressen zur Arbeit zu erkennen in Python?

\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))

War es hilfreich?

Lösung

Die Originalquelle , dass die Staaten „Dieses Muster sollte in den meisten modernen Regex-Implementierungen arbeiten“ und speziell Perl. Python Regex Implementierung ist modern und ähnlich wie Perl aber fehlt das [:punct:] Charakter Klasse. Sie können ganz einfach bauen, dass die Nutzung dieses:

>>> import string, re
>>> pat = r'\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^%s\s]|/)))'
>>> pat = pat % re.sub(r'([-\\\]])', r'\\\1', string.punctuation)

Der re.sub() Anruf entgeht bestimmte Zeichen in dem Zeichensatz nach Bedarf .

Bearbeiten : Mit re.escape () funktioniert genauso gut, da es nur einen Backslash vor klebt alles . Das fühlte sich Rohöl mir zuerst, aber sicher funktioniert gut für diesen Fall.

>>> pat = pat % re.escape(string.punctuation)

Andere Tipps

Ich glaube nicht, Python hat diesen Ausdruck

[:punct:]

Wikipedia sagt [:punct:] ist gleich

[-!\"#$%&\'()*+,./:;<=>?@\\[\\\\]^_`{|}~]

Python hat nicht die POSIX Klammerausdrücke .

Der [:punct:] Klammerausdruck entspricht in ASCII

[!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~] 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top