2013-02-26 6 views
5

私はURL文字列にpython正規表現を使用しようとしています。 http://docs.python.org/2/library/re.html#finding-all-adverbsのドキュメントに基づいてPython regex - 検索とfindの違いをすべて

id= 'edu.vt.lib.scholar:http/ejournals/VALib/v48_n4/newsome.html' 
>>> re.search('news|ejournals|theses',id).group() 
'ejournals' 
>>> re.findall('news|ejournals|theses',id) 
['ejournals', 'news'] 

、それは(検索を言います)最初のものと一致すると、すべての文字列内のすべての可能なものと一致して見つけます。

「ニュース」がパターンで最初に宣言されているにもかかわらず、検索でキャプチャされないのはなぜだろうか。

私は間違ったパターンを使用しましたか?私はそれらのキーワードのいずれかが文字列内にあるかどうか検索したい。

答えて

1

あなたはそれを後方に考えています。正規表現は、"news" OR "ejournals" OR "theses"を検索し、見つかった最初の文字列を返します。この場合、"ejournals"がターゲット文字列の最初に表示されます。

+0

ありがとうございました。私の悪い、私はこれを考えなかった。 – kich

2

re.search()関数は、パターンの最初のオプションではなく、条件を満たす最初のオカレンスの後に停止します。

関連する問題