7

URL文字列でPython正規表現を使用しようとしています。

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']

http://docs.python.org/2/library/re.html#finding-all-adverbsのドキュメントに基づいて、search()は最初のものと一致し、文字列内のすべての可能なものと一致するものをすべて検索すると言います。

パターンの最初に宣言されているのに、なぜ「ニュース」が検索でキャプチャされないのか疑問に思います。

間違ったパターンを使用しましたか?これらのキーワードのいずれかが文字列に含まれているかどうかを検索したいと思います。

4

4 に答える 4

4

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

于 2013-02-26T21:55:07.770 に答える
3

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

于 2013-02-26T21:54:48.483 に答える