import re
"""
match() 文字列の先頭で正規表現とマッチするか判定
search() 文字列を操作して、正規表現がどこにマッチするか調べる
findall() 正規表現にマッチする部分文字列を全て探し出しリストとして返す
finditer() 重複しないマッチオブジェクトのイテレータを返す
"""
# .は任意の1文字
# マッチオブジェクトが返ってきます
m = re.match('a.c', 'abc')
# group()で中身が見れます。
print(m.group())
# マッチオブジェクトが返ってきます
m = re.search('a.c', 'test abc test abc')
print(m)
print(m.span())
print(m.group())
m = re.findall('a.c', 'test abc test abc')
print(m)
# マッチオブジェクトのイテレータが返ってくる
m = re.finditer('a.c', 'test abc test abc')
print([w.group() for w in m])
# 0または1の繰り返し
m = re.match('ab?', 'a')
print(m)
# 0回以上の繰り返し
m = re.match('ab*', 'abb')
print(m)
# 1回以上の繰り返し
m = re.match('ab+', 'abbb')
print(m)
# 3回の繰り返し
m = re.match('a{3}', 'aaaa')
print(m)
# 2-4回の繰り返し
m = re.match('a{2,4}', 'aaaa')
print(m)
# 英数字とアンダースコアー、[]の部分は集合といいます。
m = re.match('[a-zA-Z0-9_]', '1')
# m = re.match('\w', '1')
print(m)
# 英数字とアンダースコアー以外
m = re.match('[^a-zA-Z0-9_]', '@')
# m = re.match('\W', '1')
print(m)
# 任意の数字
m = re.match('[0-9]', '1')
# m = re.match('\d', '1')
print(m)
# 任意の数字以外
m = re.match('[^0-9]', '@')
# m = re.match('\D', '1')
print(m)
# aまたはb
m = re.match('a|b', 'b')
print(m)
# かたまりとして扱います
m = re.match('(abc)+', 'abcabc')
print(m)
# スペース
m = re.match('\s', ' ')
print(m)
# スペース以外
m = re.match('\S', '1')
print(m)
# エスケープ
m = re.match('\*', '*')
print(m)
m = re.match('\?', '?')
print(m)
# 先頭一致
m = re.search('^abc', 'abctest abc')
print(m)
# 末尾
m = re.search('abc$', 'test abc')
print(m)
実行結果:
abc
<re.Match object; span=(5, 8), match='abc'>
(5, 8)
abc
['abc', 'abc']
['abc', 'abc']
<re.Match object; span=(0, 1), match='a'>
<re.Match object; span=(0, 3), match='abb'>
<re.Match object; span=(0, 4), match='abbb'>
<re.Match object; span=(0, 3), match='aaa'>
<re.Match object; span=(0, 4), match='aaaa'>
<re.Match object; span=(0, 1), match='1'>
<re.Match object; span=(0, 1), match='@'>
<re.Match object; span=(0, 1), match='1'>
<re.Match object; span=(0, 1), match='@'>
<re.Match object; span=(0, 1), match='b'>
<re.Match object; span=(0, 6), match='abcabc'>
<re.Match object; span=(0, 1), match=' '>
<re.Match object; span=(0, 1), match='1'>
<re.Match object; span=(0, 1), match='*'>
<re.Match object; span=(0, 1), match='?'>
<re.Match object; span=(0, 3), match='abc'>
<re.Match object; span=(5, 8), match='abc'>
##参考文献