Pythonの正規表現でよく使うパターンのテンプレート

Pythonの正規表現でよく使うパターンをまとめました。

以下が今回の記事でマッチさせる正規表現のパターンになります。

もちろんPythonの標準ライブラリreオブジェクトも必要です。

目次

アルファベット:[a-z]、[A-Z]、[a-zA-Z]

アルファベットで小文字、大文字、小文字/大文字両方のマッチパターンは以下です。

# 小文字のアルファベットa~zをマッチ
[a-z]

# 大文字のアルファベットA~Zをマッチ
[A-Z]

# 小文字・大文字問わずアルファベットA~Zをマッチ
[a-zA-Z]

サンプルは以下になります。

import re

str=1234567890aBC1234567890

pattern1=r[a-z]
pattern2=r[A-Z]
pattern3=r[a-zA-Z]

lowstring=re.search(pattern1,str)
upperstring=re.search(pattern2,str)
allstring=re.findall(pattern3,str)

print(Lowercase:,lowstring)
print(Uppercase:,upperstring)
print(All alphabet:,allstring)

数値:[0-9]

数値の正規表現マッチパターンは以下です。

# 0~9の数字をマッチ
[0-9]

# 1~5の数字をマッチ
[1~5]

# 1,2だけをマッチ
[12]

サンプルは以下になります。

import re

str='i know 3v3r1th1ng abou2 python'

pattern =r[0-9]

num = re.search(pattern, str)
numlist=re.findall(pattern,str)

print(re.search:,num)
# re.search: <re.Match object; span=(7, 8), match='3'>

print(re.findall:,numlist)
# re.findall: ['3', '3', '1', '1', '2']

電話番号

電話番号の正規表現パターンは以下です。

# 一般的な電話番号
[0-9]{2,4}-[0-9]{2,4}-[0-9]{3,4}

# 携帯電話
0[789]0-[0-9]{4}-[0-9]{4}

# 03で始まる
03-[0-9]{2,4}-[0-9]{3,4}

以下がサンプルになります。

import re

str1='phonenumberis12-3456-7890'
str2='phonenumberis1234-56-7890'
str3='phonenumberis1234-567-890'
str4='phonenumberis123-4567-7890'
pattern =r[0-9]{2,4}-[0-9]{2,4}-[0-9]{2,4}

phone_number1 = re.search(pattern, str1)
phone_number2 = re.search(pattern, str2)
phone_number3 = re.search(pattern, str3)
phone_number4 = re.search(pattern, str4)

print(str1,phone_number1)
# str1 <re.Match object; span=(13, 25), match='12-3456-7890'>
print(str2,phone_number2)
# str2 <re.Match object; span=(13, 25), match='1234-56-7890'>
print(str3,phone_number3)
# str3 <re.Match object; span=(13, 25), match='1234-567-890'>
print(str4,phone_number4)
# str4 <re.Match object; span=(13, 26), match='123-4567-7890'>

住所(○○県XX市)

都道府県+市町村のパターンをマッチさせるは以下になります。

# 都道府県+市町村
(...??[都道府県])(.+?[区市区町村])(.+)

サンプルは以下になります。

import re

s_nums = 'My address is:東京都港区六本木6丁目9−1'

pattern=r(...??[都道府県])(.+?[区市区町村])(.+)

address = re.search(pattern,s_nums)

print(address)
# <re.Match object; span=(13, 28), match=':東京都港区六本木6丁目9−1'>

URL

URLの正規表現マッチパターンは以下です。

# http/httpsドメインを取得
(http|https)://[a-zA-Z0-9_/:%#\
amp;\?\(\)~\.=\+\-]+

以下がサンプルになります。

import re

str1 = url is http://www.google.co.jp/

pattern = r(http|https)://[a-zA-Z0-9_/:%#\
amp;\?\(\)~\.=\+\-]+ url = re.search(pattern, str1) print(url) # <re.Match object; span=(7, 31), match='http://www.google.co.jp/'>

IPアドレス

IPv4アドレスをマッチするパターンです。

# IPv4アドレス
(?:[0-9]{1,3}\.){3}[0-9]{1,3}

以下がサンプルになります。

import re

str1='fakeip:123.333.444     realip:123.234.456.678'

pattern =r\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b

ip = re.search(pattern, str1)

print(ip)
# <re.Match object; span=(30, 45), match='123.234.456.678'>

郵便番号

7桁の郵便番号は以下になります。

# 3桁―4桁の一般的な郵便番号
[0-9]{3}-[0-9]{4}

以下がサンプルになります。

import re

str1='fake postal code:1234-5678 postal code:123-4567'

pattern =r\b[0-9]{3}-[0-9]{4}\b

pscode = re.search(pattern, str1)

print(pscode)
# <_sre.SRE_Match object; span=(17, 25), match='123-4567'>

HTMLタグ

pタグやaタグなどのHTMLタグをマッチさせるのは以下になります。

# 開始タグと終了タグを取得
<[^>]*?>

以下がサンプルになります。

import re

str1= ''' 
<p>Python Practice</p>
<div class=nothing>
nothing
</div>
<section 
class=partone>
nothing
</section>
'''

pattern =<[^>]*?>

taglist=re.findall(pattern,str1)

print(taglist)

# ['<p>', '</p>', '<div class=nothing>', '</div>', '<section \nclass=partone>', '</section>']

画像ファイル(jpg/gif/png)

jpg、git、pngを正規表現でマッチさせるのは以下になります。

# 画像ファイルをマッチ
[a-zA-Z0-9\_-]+\.(jpg|gif|png)

以下がサンプルになります。

import re

image_list=[aaa.lol,bbb.png,ccc.gif,ddd.jpg,eee.tot]

pattern = r[a-zA-Z0-9\_-]+\.(jpg|gif|png)

for image in image_list:
    i = re.search(pattern,image)
    print(i)

# None
# <_sre.SRE_Match object; span=(0, 7), match='bbb.png'>
# <_sre.SRE_Match object; span=(0, 7), match='ccc.gif'>
# <_sre.SRE_Match object; span=(0, 7), match='ddd.jpg'>
# None

ドメイン(.com/.netなど)

yahoo.comなどのドメインをマッチさせるのは以下になります。

# 一般的な英数字ドメイン
([a-zA-Z0-9][a-zA-Z0-9\-]{1,61}[a-zA-Z0-9]\.)+[a-zA-Z]+

以下がサンプルになります。

import re

str1 = Domain is google.com

pattern = r([a-zA-Z0-9][a-zA-Z0-9\-]{1,61}[a-zA-Z0-9]\.)+[a-zA-Z]+

domain = re.search(pattern,str1)

print(domain)
# <_sre.SRE_Match object; span=(10, 20), match='google.com'>

日付(yyyy/mm/dd)

日付形式のyyyy/mm/ddやyyyy-mm-ddなどは以下でマッチすることが出来ます。

# 日付型形式
[0-9]{4}[^0-9][0-9]{1,2}[^0-9][0-9]{1,2}

以下がサンプルになります。

import re

str1='Date 1 is:2020/05/10'
str2='Date 2 is:2020/1/15'
str3='Date 3 is:2020-05-10'

pattern =r[0-9]{4}[^0-9][0-9]{1,2}[^0-9][0-9]{1,2}
date1 = re.search(pattern, str1)
date2 = re.search(pattern,str2)
date3 = re.search(pattern,str3)

print(date1)
# <_sre.SRE_Match object; span=(8, 18), match='2020/05/10'>
print(date2)
# <_sre.SRE_Match object; span=(7, 16), match='2020/1/15'>
print(date3)
# <_sre.SRE_Match object; span=(10, 20), match='2020-05-10'>

メールアドレス

xxxxx.comなどのメールアドレスは以下になります。

# .comなどメールアドレス
[a-zA-Z0-9_.+-]+@(?:[a-zA-Z0-9]+\.){1,}[a-zA-Z0-9]+

以下がサンプルになります。

import re

str1=My email address is pythonisgood@gmail.com

pattern = r[a-zA-Z0-9_.+-]+@(?:[a-zA-Z0-9]+\.){1,}[a-zA-Z0-9]+

email=re.search(pattern,str1)

print(email)
# <_sre.SRE_Match object; span=(20, 42), match='pythonisgood@gmail.com'>

ツイッターID(@xxxxxxxxxx)

TwitterのIDをマッチさせる場合には@マークを利用します。

# TwitterのIDを取得
@[a-zA-Z0-9_]+

以下がサンプルになります。

import re

str1=My twitter-id is @helloworld

pattern = r@[a-zA-Z0-9_]+

twitterid=re.search(pattern,str1)

print(twitterid)
# <_sre.SRE_Match object; span=(17, 28), match='@helloworld'>
よかったらシェアしてね!
  • URLをコピーしました!
目次