LoginSignup
1
2

More than 3 years have passed since last update.

正規表現re

Last updated at Posted at 2020-07-14
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'>

参考文献

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2