
Ich erstelle einen regulären Ausdruck, um alle Teilzeichenfolgen herauszufiltern, die mit „#“ oder „@“ beginnen. Ich versuche, Tweets aus diesen herauszufiltern. Derzeit stimmt alles überein, unabhängig davon, ob die Zeichenfolge Wörter enthält, die mit „#“ oder „@“ beginnen.
((?!\#)|(?!\@)).*
In der folgenden Zeichenfolge möchte ich alles in Fettschrift abgleichen, aber nicht mehr:
Hallo Shah Rukh. Wer ist Ihr Co-Schauspieler im kommenden Film?@iamsrk #LiebeausMalaysia #FragSRK
Ich möchte die Leerzeichen zwischen den Wörtern fett gedruckt lassen. Wie kann ich das erreichen? Dies wird zu Ihrer Information in Python verwendet.
Antwort1
Es ist egal, ob alles außer den Teilzeichenfolgen, die mit '@' oder '#' beginnen, übereinstimmt. Ich habe einfach das Gegenteil getan und re.sub in Python verwendet, um diese aus der Zeichenfolge zu entfernen:
>>> import re
>>> text = 'Hi shah rukh. Who is your co-actor in the upcoming movie? @iamsrk #lovefrommalaysia #askSRK'
>>> text = re.sub(r'([\#\@].*?)(?=([\r\n ]|$))', '', text).strip()
>>> print text
Hi shah rukh. Who is your co-actor in the upcoming movie?
Kurze Erklärung:
- Die Übereinstimmungsgruppe Nr. 1
([\#\@].*?)
gruppiert entweder # oder @ mit möglichst wenigen nachfolgenden Zeichen (nicht gierig). - Beim positiven Lookahead
(?=([\r\n ]|$))
wird versucht, entweder einen Wagenrücklauf, eine neue Zeile, ein Leerzeichen oder das Ende einer Zeichenfolge zu finden, ohne diese(s) in das Ergebnis aufzunehmen.
Ich weiß nicht, wie elegant diese Lösung ist, aber für meinen Zweck funktioniert sie. Probieren Sie es aus aufregexr.com