Python 正規表現で一致した文字列のリストを返す(findall)

Pythonのfindallメソッドの正規表現で一致した文字列のリストを返すサンプルです。
(確認環境:Python 3)

目次

メソッド findallメソッド
AB 文字列を指定
[AB] 文字をORで指定
[^A] 文字を否定で指定
[A-C] 文字を範囲で指定
c{2} 連続する文字を指定
c{2,} 連続する文字(個以上)を指定
c+ 1回以上出現している文字を指定
  大文字小文字を無視する
パターン 正規表現のパターン

findallメソッド

re.findall(pattern, string, flags=0)
  • 1つめの引数は、正規表現です。
  • 2つめの引数は、対象の文字列です。
  • 戻り値は、リスト(配列)です。
  • 対象がヒットしない場合は空のリスト(配列)を返します。
  • 戻り値があるかはif文で判定できます。
    a= re.findall(pattern, string)
    if a:
      処理
  • 最初にimport reの記述が必要です。

文字列を指定

# coding: utf-8
import re

a = "BC"

b = re.findall(a,'ABCABC')
if b:
	print(b[0]) # BC
	print(b[1]) # BC
else:
	print(b)

4行目は、文字列「BC」を指定しています。
6行目のfindallメソッドの引数にはBCが2つあります。
8,9行目は、それぞれBCが表示されます。

文字をORで指定

# coding: utf-8
import re

a = "[AE]"

b = re.findall(a,'ABCABC')
if b:
	print(b[0]) # A
	print(b[1]) # A
else:
	print(b)

4行目は、「A」または「E」を指定しています。
8,9行目は、Aが表示されます。

文字を否定で指定

# coding: utf-8
import re

a = "[^A]"

b = re.findall(a,'ZZZ')
if b:
	print(b[0]) # Z
	print(b[1]) # Z
	print(b[2]) # Z
else:
	print(b)

4行目は、「A」以外の文字を指定しています。
8,9,10行目は、Zが表示されます。

文字を範囲で指定

# coding: utf-8
import re

a = "[A-C]"

b = re.findall(a,'ZZCZB')
if b:
	print(b[0]) # C
	print(b[1]) # B
else:
	print(b)

4行目は、「A」または「B」または「C」の文字を指定しています。
8,9行目は、C,Bが表示されます。

連続する文字を指定

# coding: utf-8
import re

a = "c{2}"

b = re.findall(a,'acccbcc')
if b:
	print(b[0]) # cc
	print(b[1]) # cc
else:
	print(b)

4行目は、正規表現で「c」が2回連続することを指定しています。
6行目はfindallメソッドです。
7行目のif文はtrueになります。
8,9行目は、ccが表示されます。

連続する文字(個以上)を指定

# coding: utf-8
import re

a = "c{2,}"

b = re.findall(a,'acccbcc')
if b:
	print(b[0]) # ccc
	print(b[1]) # cc
else:
	print(b)

4行目は、正規表現で「c」が2回以上連続することを指定しています。
6行目はfindallメソッドです。
7行目のif文はtrueになります。
8,9行目は、cccとccが表示されます。

1回以上出現している文字を指定

# coding: utf-8
import re

a = "c+"

b = re.findall(a,'acccbcc')
if b:
	print(b[0]) # ccc
	print(b[1]) # cc
else:
	print(b)

4行目は、正規表現で「c」が1回以上出現しているを指定しています。
6行目はfindallメソッドです。
7行目のif文はtrueになります。
8,9行目は、cccとccが表示されます。

大文字小文字を無視する

# coding: utf-8
import re

a = "c+"

b = re.findall(a,'ACBc',re.IGNORECASE)
if b:
	print(b[0]) # C
	print(b[1]) # c
else:
	print(b)

4行目は、正規表現で「c」が1回以上出現しているを指定しています。
6行目は、findallメソッドの3つめの引数にre.IGNORECASEを指定しています。大文字小文字を無視します。
7行目のif文はtrueになります。
8,9行目は、Cとcが表示されます。

以下はPython 3.7.3 ドキュメントのsearchメソッドのリンクです。
https://docs.python.org/ja/3/library/re.html#re.findall

正規表現のパターン

正規表現の一覧表

以下は、re --- 正規表現操作のリンクです。
https://docs.python.org/ja/3/library/re.html

関連の記事

Python 正規表現で一致した最初の文字列を返す(search)
Python split 文字列を分割してリストにする
Python 文字列を置換する(replace)

△上に戻る