2017-10-11 5 views
1

私はBeautifulSoupを使ってPythonスクリプトをスクラップしています。後で不要な文字列を含むリンクを返すPython re.findall

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

のようなリンクを見つけるように設計されています:これは私のコードです

stream://987cds9c8ujru56236te2ys28u99u2s 

をしかし、それはまた、このような文字列を返します。

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

すなわちスペースと余分なものとされIほしくない。どうすれば表現できますか

re.findall 

したがって、リンクの最初の部分だけが返されますか?あなたは単語の境界文字'\b'と非欲張りマッチ(パターンに?を追加)を使用することができます

+0

'$'は、文字列の終わりのための正規表現は、このヘルプのための – Eqomatic

答えて

1

(事前のおかげで):

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

するか、あなただけの単語を一致させたい場合あなたは、単に'\w+'を使用できる文字:

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

おかげではなくunfortunaですリンク内の文字列は単語ではありません。文字と数字で構成されているため、単語の境界や単語の文字は機能しません。上記の$提案を文字列の終わりの境界として試してみましょう。非貪欲な示唆は助けに役立ちます。 – manners

+0

@mannersもし私が* if *と言ったことは、すべてのケースでうまくいくとは言いませんでした。また、最初のアプローチが機能しないことを意味しますか? –

+0

それは働いています。ありがとうございました。 – manners

関連する問題