正規表現

pythonでの文字検索、正規表現についてメモ
beautifulsoupのスクレイピングの際、検索条件を指定するために利用しました。


よくある表現集、以下のように基本はマッチするものを探します。
\d 任意の数字 ==[0-9]
\D 任意の数字以外 ==[^0-9]
\s 任意の空白文字 ==[\t\n\r\f\v]
\S 任意の空白文字以外 ==[^\t\n\r\f\v]
\w 任意の英数字 =[a-xA-Z0-9_]
\W 任意の英数字以外 ==[\a-xA-Z0-9_]
\A 文字列の先頭 ==^
\Z 文字列の末尾 ==$

. 任意の一文字
^ 文字列の先頭
$ 文字列の末尾
* 0回以上の繰り返し
+ 1回以上の繰り返し
? 0回または1回
{m} m回の繰り返し
{m,n} m〜n回の繰り返し

これを'\S+'のように、任意の空白文字以外で一致しているところ全てをマッチさせる、などのように利用します。 

ただしアカウントのIDなど、複数条件(英数字、アンダーバー)などで複数の条件をもたせたい場合は[a-zA-Z0-9_]のように続けて列挙することで実現します(この場合は小文字アルファベット、大文字アルファベット、数字、アンダーバー)。

例えば
'twitterのIDは@note_testです。' という文章から検索を掛ける場合は、

import re
text = 'twitterのIDは@note_testです。'
search = re.findall('@[a-zA-Z0-9_]+', text)[0]
print(search)
>>>@note_test

と出力されます。

この記事が気に入ったらサポートをしてみませんか?