Closed4

Python3_str, reモジュール

かじるかじる

Python実践レシピより

Python3エンジニア認定実践試験メモ

文字列の検索、操作、正規表現

main.py
# 文字列を検索し、位置を返す
print("abcdefghijk".find("efg"))
# 4

# 文字列を検索し、位置を返す(存在しない場合)
print("abcdefghijk".find("xyz"))
# -1

# 文字列を分割し配列に格納
msg1 = "sun mon tue wed thu fri sat"
msgs = msg1.split()
msg2 = "_".join(msgs)

print(msg1)
# sun mon tue wed thu fri sat
print(msgs)
# ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']
print(msg2)
# sun_mon_tue_wed_thu_fri_sat

# 接頭辞が一致する文字列か調べる
prefix = ("hop", "step", "jump")
print("step.png".startswith(prefix))# True
print("stop.txt".startswith(prefix))# False

# 接尾辞が一致する文字列か調べる
suffix = ("png", "jpg", "gif")
print("step.png".endswith(suffix))# True
print("stop.txt".endswith(suffix))# False
かじるかじる

正規表現

main.py
import re

# 検索対象の文字列
target = "abcdefghijk"

# 文字列に正規表現にマッチするか
print(re.search("d.f", target))
# <re.Match object; span=(3, 6), match='def'>

# 文字列の先頭部分に正規表現にマッチするかどうか
print(re.match("d.f", target))
# None
print(re.match("a.c", target))
# <re.Match object; span=(0, 3), match='abc'>

# フラグ
print(re.search("\w", "いろはにほへとABCDEFG"))
# い

# フラグ(UnicodeではなくASCII)
print(re.search("\w", "いろはにほへとABCDEFG", flags=re.A))
# A
かじるかじる

正規表現オブジェクト

main.py
import re

# 検索対象の文字列
target1 = "abcdefghijk"

# 正規表現オブジェクト
regex1 = re.compile("d.f")
print(regex1.search(target1))
print(regex1.match(target1))# 先頭とマッチするか
print(regex1.fullmatch(target1))# 全体とマッチするか

regex2 = re.compile("[d-g]+")
print(regex2.search(target1))
print(regex2.match(target1))# 先頭とマッチするか
print(regex2.fullmatch(target1))# 全体とマッチするか

# 正規表現オブジェクト
regex3 = re.compile("[()-+]")

print(regex3.split("(080)1234-5678"))# 分割
# ['', '080', '1234', '5678']

print(regex3.split("080-1234-5678"))# 分割
# ['080', '1234', '5678']

print(regex3.split("+81-80-1234-5678"))# 分割
# ['', '81-80-1234-5678']

# マッチオブジェクト
result = re.match(r"(\d+)-(\d+)-(\d+)", "080-1234-5678")
print(result.group(0))# 全体
# 080-1234-5678
print(result.group(1))# サブグループ
# 080
print(result.group(2))# サブグループ
# 1234
print(result.group(3))# サブグループ
# 5678
かじるかじる

正規表現の特殊文字

特殊文字 意味
\d 数字
\D 数字以外
\s 空白文字
\S 空白文字以外
\w 任意の英数字
\W 任意の英数字以外
. 任意の1文字
^ 先頭
$ 末尾
* 0文字以上の繰り返し
+ 1文字以上の繰り返し
? 0回か1回の繰り返し
{m} m回の繰り返し
{m, n} m回以上、n回以下の繰り返し
[...] 指定したいずれかの文字
[^...] 指定したいずれかの文字以外
(x|y) xかyのいずれか
このスクラップは2ヶ月前にクローズされました