主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Pythonのreモジュールと正規表現を使ってドキュメントから情報を抜き出す

                
tags:
1. re.search()とre.match()を使い分ける
import re


str = r'<div id="foo1">eins</div><div id="foo2">zwei</div><div id="foo3">drei</div>'

foo_search = re.search(r'<div id="foo2">zwei</div>', str)
print type(foo_search)

foo_match = re.match(r'<div id="foo2">zwei</div>', str)
print type(foo_match)



>>>
<type '_sre.SRE_Match'>
<type 'NoneType'>


matchは前方一致、searchは文中まで検索。


2. re.search()とre.findall()を使い分ける
import re


str = r'<div id="foo1">eins</div><div id="foo2">zwei</div><div id="foo3">drei</div>'

foo_search = re.search(r'<div id="\w+">\w+</div>', str)
print foo_search.group()

foo_findall = re.findall(r'<div id="\w+">\w+</div>', str)
print foo_findall


>>>
<_sre.SRE_Match object at 0x027E09F8>
['<div id="foo1">eins</div>', '<div id="foo2">zwei</div>', '<div id="foo3">drei</div>']


searchは前方から検索して一致するパターンが一つ見つかればそれを返す。findallは文中からすべての一致パターンを返す。


3. 正規表現にマッチした部分だけ抜き出す
import re


str = r'<div id="foo1">eins</div><div id="foo2">zwei</div><div id="foo3">drei</div>'

foo_search = re.search(r'<div id="(\w+)">(\w+)</div>', str)
print foo_search.group(0), foo_search.group(1), foo_search.group(2)

foo_findall = re.findall(r'<div id="(\w+)">(\w+)</div>', str)
print foo_findall


>>>
<div id="foo1">eins</div> foo1 eins
[('foo1', 'eins'), ('foo2', 'zwei'), ('foo3', 'drei')]


正規表現を丸かっこ"()"で括る。そうすると正規表現に一致した部分だけの情報を得ることができる。searchを使った場合、メソッドgroup()を使う。
            

コメントの投稿

非公開コメント

プロフィール

hMatoba

Author:hMatoba
Github

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。