文字 | 説明 | 同様 | 例 | マッチする | マッチしない |
---|---|---|---|---|---|
\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 |
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
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']