正規表現リスト

引用:分かりやすいpythonの正規表現の例

文字 説明 同様 マッチする マッチしない
\d 任意の数字 [0-9]
\D 任意の数字以外 [^0-9]
\s 任意の空白文字 [\t\n\r\f\v]
\S 任意の空白文字以外 [^\t\n\r\f\v]
\w 任意の英数字 [a-zA-Z0-9_]
\W 任意の英数字以外 [\a-zA-Z0-9_]
\A 文字列の先頭 ^
\Z 文字列の末尾 $
. 任意の一文字 - a.c abc, acc, aac abbc, accc
^ 文字列の先頭 - ^abc abcdef defabc
$ 文字列の末尾 - abc$ defabc abcdef
* 0回以上の繰り返し - ab* a, ab, abb, abbb aa, bb
+ 1回以上の繰り返し - ab+ ab, abb, abbb a, aa, bb
? 0回または1回 - ab? a, ab abb
{m} m回の繰り返し - a{3} aaa a, aa, aaaa
{m,n} m〜n 回の繰り返し - a{2, 4} aa, aaa, aaaa a, aaaaa
[] 集合 - [a-c] a, b, c d, e, f
縦線 和集合(または) - a縦線b a, b c, d
() グループ化 - (abc)+ abc, abcabc a, ab, abcd

Examples

拡張子

拡張子の判定

import re

filter = re.compile('.+\\\\.(jpg|png)')
path = 'C:/Users/yamagishi/Documents/files.jpg/pic001.png'
result = filter.match(path)
if result:
    print(result)
    print(result.start())
    print(result.end())
    print(result.group())
    print(result.group(0))
    print(result.group(1))
    print(result.groups())

# Result:
# <re.Match object; span=(0, 49), match='C:/Users/yamagishi/Documents/files.jpg/pic001.png>
# 0
# 49
# C:/Users/yamagishi/Documents/files.jpg/pic001.png
# C:/Users/yamagishi/Documents/files.jpg/pic001.png
# png
# ('png',)

path = 'C:/Users/yamagishi/Documents/files.jpg/pic001.exr'
result = filter.match(path)

# None

拡張子の差し替え

import re

path = 'C:/Users/yamagishi/Documents/files.jpg/pic001.png'
filter = re.compile(r'(jpg|png)')
result = filter.sub('exr', path)
print(result)

# C:/Users/yamagishi/Documents/files.exr/pic001.exr

re以外

filename, ext = os.path.splitext(p)

pathlib.Path(p).suffix()

ファイルパス

import re

p = r'C:/CG/PROJ/01_Workflow/Shots/2031-00100/Rendering/3dRender/cg_v022/v020/cg/cg.v0012.%04d.exr'

バージョン判定

# 「vで始まる数字」部分
re.findall(r'v[0-9]+', p)

# ['v022', 'v020', 'v0012']

+を取ると「vの次の文字が数字部分」となる。vと数字1桁部分。

re.findall(r'v[0-9]', p)

#['v0', 'v0', 'v0']

vと数字三桁

re.findall(r'v[0-9][0-9][0-9]', p)

['v022', 'v020', 'v001']