目次
| メソッド | searchとは |
| AB | 文字列を指定 |
| [AB] | 文字をORで指定 |
| [^A] | 文字を否定で指定 |
| [A-C] | 文字を範囲で指定 |
| ^A | 先頭の文字列を指定 |
| A$ | 末尾の文字列を指定 |
| c{2} | 連続する文字を指定 |
| c{2,} | 連続する文字(個以上)を指定 |
| c+ | 1回以上出現している文字を指定 |
| ^[0-9]{5}$ | 数値(0-9)の5桁+先頭と末尾も(0-9) |
| ^[0-9a-f]{5}$ | 数値(0-9)と英字(a-f)の5桁+先頭と末尾も(0-9 or a-f) |
| ^[0-9]{3}-[0-9]{4}$ | 郵便番号(数値3桁とハイフンと数値4桁)+先頭と末尾も(0-9) |
| 大文字小文字を無視する |
(確認環境:Python 3)
searchとは
| re.search(pattern, string, flags=0) |
- re.search() は、最初に見つかった1つだけを返します。←re.findall()との違い
- 1つめの引数は、正規表現です。
- 2つめの引数は、対象の文字列です。
- 戻り値は、matchオブジェクトです。
- 対象がヒットしない場合はNoneを返します。
- matchオブジェクトがあるかはif文で判定できます。
match = re.search(pattern, string)
if match:
process(match) - 最初にimport reの記述が必要です。
文字列を指定
import re
a = "BC"
b = re.search(a,'ABCABC')
if b:
print(b.group(0)) # BC
3行目は、文字列「BC」を指定しています。
if文は、指定のパターンがあったのでtrueになります。
groupは一致した文字列を返します。b.group(1)とした場合は、IndexErrorになります。
文字をORで指定
import re
a = "[AE]"
b = re.search(a,'ABCABC')
if b:
print(b.group(0)) # A
3行目は、「A」または「E」を指定しています。
if文は、指定のパターンがあったのでtrueになります。
文字を否定で指定
import re
a = "[^A]"
b = re.search(a,'ZZZ')
if b:
print(b.group(0)) # Z
3行目は、「A」以外の文字を指定しています。
if文は、指定のパターンがあったのでtrueになります。
文字を範囲で指定
import re
a = "[A-C]"
b = re.search(a,'ZZC')
if b:
print(b.group(0)) # C
3行目は、「A」または「B」または「C」の文字を指定しています。
if文は、指定のパターンがあったのでtrueになります。
先頭の文字列を指定
import re
a = "^AB"
b = re.search(a,'ABC')
if b:
print(b.group(0)) # AB
3行目は、先頭が「AB」の文字を指定しています。
if文は、指定のパターンがあったのでtrueになります。
末尾の文字列を指定
import re
a = "BC$"
b = re.search(a,'ABC')
if b:
print(b.group(0)) # BC
3行目は、末尾が「BC」の文字を指定しています。
if文は、指定のパターンがあったのでtrueになります。
連続する文字を指定
import re
a = "c{2}"
b = re.search(a,'acccb')
if b:
print(b.group(0)) # cc
3行目は、「c」が2回連続することを指定しています。
if文は、指定のパターンがあったのでtrueになります。
連続する文字(個以上)を指定
import re
a = "c{2,}"
b = re.search(a,'acccb')
if b:
print(b.group(0)) # ccc
3行目は、「c」が2回以上連続することを指定しています。
if文は、指定のパターンがあったのでtrueになります。
1回以上出現している文字を指定
import re
a = "c+"
b = re.search(a,'accb')
if b:
print(b.group(0)) # cc
3行目は、「c」が1回以上出現しているを指定しています。
if文は、指定のパターンがあったのでtrueになります。
数値(0-9)の5桁+先頭と末尾も(0-9)
import re
a = "^[0-9]{5}$"
b = re.search(a,'12345')
if b:
print(b.group(0)) # 12345
if文は、指定のパターンがあったのでtrueになります。
数値(0-9)と英字(a-f)の5桁+先頭と末尾も(0-9 or a-f)
import re
a = "^[0-9a-f]{5}"
b = re.search(a,'1a23b')
if b:
print(b.group(0)) # 1a23b
if文は、指定のパターンがあったのでtrueになります。
郵便番号(数値3桁とハイフンと数値4桁)+先頭と末尾も(0-9)
import re
a = "^\d{3}-\d{4}$"
b = re.search(a,'123-4567')
if b:
print(b.group(0)) # 123-4567
\dは、数値を意味します。[0-9]と同じです。
if文は、指定のパターンがあったのでtrueになります。
大文字小文字を無視する
import re
a = "c+"
b = re.search(a,'ACB',re.IGNORECASE)
if b:
print(b.group(0)) # C
3行目は、正規表現で「c」が1回以上出現しているを指定しています。
5行目は、searchメソッドの3つめの引数にre.IGNORECASEを指定しています。大文字小文字を無視します。
if文は、指定のパターンがあったのでtrueになります。
関連の記事
