#正規表現についてよく使いそうなものをメモ。
・Mac
・python
<メモ内容>
① ”.”は 改行以外の任意の1文字(数字含む)
② matchは、先頭からマッチするかを判定する関数、マッチする場合はmatchオブジェクト(正規表現をまとめたもの)を返し、マッチしなければNONEを返す。
③ searchは、途中でマッチするかどうかを判定する関数。2箇所ある場合は最初の1箇所のみ返す。マッチする場合はmatchオブジェクトを返し、マッチしなければNONEを返す。
④ splitは指定した文字で分割する関数、返り値はリスト型
⑤ findallは、指定した文字を全て返す関数、返り値はリスト型
#(1)例題
import re
text1 = 'abcde'
text2 = 'a'
text3 = '1234'
text4 = 'a1234'
text5 = 'a1234a567'
text6 = '住所は123-3456東京都中央区999-9999'
text7 = '〒123-1234東京都中央区999-9999'
text8 = '〒1231234東京都中央区9999999'
text9 = '〒123-1234:東京都:中央区999-9999'
text10 = '〒123-1234 東京都 中央区:999-9999'
#(2)実行内容
###①text1 = 'abcde'の場合
print(re.match('.',text1))
print(re.match('abc',text1))
print(re.match('abc$',text1))
print(re.match('\d\d',text1))
実行結果
<re.Match object; span=(0, 1), match='a'>
<re.Match object; span=(0, 3), match='abc'>
None
None
###②text2 = 'a'の場合
print(re.match('.',text2))
print(re.match('abc',text2))
print(re.match('abc$',text2))
print(re.match('\d\d',text2))
実行結果
<re.Match object; span=(0, 1), match='a'>
None
None
None
###③text3 = '1234'の場合
print(re.match('.',text3))
print(re.match('abc',text3))
print(re.match('abc$',text3))
print(re.match('\d\d',text3))
実行結果
<re.Match object; span=(0, 1), match='1'>
None
None
<re.Match object; span=(0, 2), match='12'>
###④text4 = 'a1234'の場合
print(re.match('.',text4))
print(re.match('abc',text4))
print(re.match('abc$',text4))
print(re.match('\d\d',text4))
実行結果
<re.Match object; span=(0, 1), match='a'>
None
None
None
###⑤text5 = 'a1234a567'の場合
print(re.match('\d{2}',text5))
print(re.search('\d{2}',text5))
実行結果
None
<re.Match object; span=(1, 3), match='12'>
###⑥text6 = '住所は123-3456東京都中央区999-9999'の場合
print(re.match('\d{2}',text6))
print(re.search('\d{2}',text6))
print(re.match('\d{3}-\d{4}',text6))
print(re.search('\d{3}-\d{4}',text6))
print(re.search('.\d{3}-\d{4}',text6))
実行結果
None
<re.Match object; span=(3, 5), match='12'>
None
<re.Match object; span=(3, 11), match='123-3456'>
<re.Match object; span=(2, 11), match='は123-3456'>
###⑦text7 = '〒123-1234東京都中央区999-9999'の場合
print(re.match('\d{3}-\d{4}',text7))
print(re.search('\d{3}-\d{4}',text7))
print(re.search('.\d{3}-\d{4}',text7))
print(re.findall('\d{3}-\d{4}',text7))
print(re.findall('\d{3}\d{4}',text7))
print(re.findall('.\d{3}-\d{4}',text7))
実行結果
None
<re.Match object; span=(1, 9), match='123-1234'>
<re.Match object; span=(0, 9), match='〒123-1234'>
['123-1234', '999-9999']
[]
['〒123-1234', '区999-9999']
###⑧text8 = '〒1231234東京都中央区9999999'の場合
print(re.findall('\d{3}\d{4}',text8))
実行結果
['1231234', '9999999']
###⑨text9 = '〒123-1234:東京都:中央区999-9999'の場合
print(re.split('[:]',text9))
実行結果
['〒123-1234', '東京都', '中央区999-9999']
###⑩text10 = '〒123-1234 東京都 中央区:999-9999'の場合
print(re.split('[,]',text9))
実行結果
['〒123-1234:東京都:中央区999-9999']