2017-10-11 1 views
1

Ich habe ein Python-Skript mit BeautifulSoup zu kratzen. Dies ist mein Code:Python re.findall gibt Links mit unerwünschten Strings zurück

re.findall('stream:\/\/.+', link) 

die entworfen, um Verbindungen zu finden wie:

stream://987cds9c8ujru56236te2ys28u99u2s 

Aber es gibt auch Strings wie folgt aus:

stream://987cds9c8ujru56236te2ys28u99u2s [SD] Spanish - (9.15am) 

dh mit Leerzeichen und extra Sachen die ich will nicht. Wie kann ich die

re.findall 

ausdrücken So gibt es nur den Link ersten Teil zurück?

(Vielen Dank im Voraus)

+0

'' $ ist die Regex für Ende der Zeichenfolge – Eqomatic

Antwort

1

Sie ein nicht gieriges Spiel verwenden kann (Hinzufügen ? das Muster) mit einer Wortgrenze Charakter '\b':

>>> re.findall(r'stream:\/\/.+?\b', link) 
['stream://987cds9c8ujru56236te2ys28u99u2s'] 

Oder wenn Sie nur Wort Übereinstimmen Zeichen können Sie einfach '\w+' verwenden:

>>> re.findall(r'stream:\/\/\w+', link) 
['stream://987cds9c8ujru56236te2ys28u99u2s'] 
+0

Vielen Dank für diese Hilfe, aber viele L Die Zeichenfolge in der Verknüpfung ist kein Wort - sie kann aus Buchstaben und Zahlen bestehen, so dass Wortgrenzen oder Wortzeichen nicht funktionieren. Ich werde mit den obigen $ Vorschlägen als Grenze für das Ende der Zeichenfolge versuchen. Der nicht-gierige Vorschlag hilft jedoch. – manners

+0

@manners Ich sagte * wenn *, sagte nie, es wird in allen Fällen funktionieren. Du meinst auch, der erste Ansatz funktioniert nicht? –

+0

Habe es funktioniert. Vielen Dank. – manners

Verwandte Themen