我尽力检查互联网和堆栈信息,但我无法将我的头围绕正则表达式为我的实用程序。
我有一个遵循这种模式的字符串:
[any a-z,1-9]_reel[0-9]*2_scn[0-9]*4_shot[0-9]*4
例如:
kim_reel05_scn0101_shot0770
n74_reel05_scn0001_shot0700
ninehundred_reel05_scn0001_shot0700
我需要检查这些示例,看它是否遵循proj_reel ## _ scn #### _ shot #### pattern,然后是否继续! 我不知道如何编写这个表达式,因为老实说我很难理解如何使用特殊字符。
有人想帮帮我吗?答案 0 :(得分:2)
^proj_reel[0-9]{2}_scn[0-9]{4}_shot[0-9]{4}$
你可以试试这个。不要忘记设置g
和m
标志。参见演示。
答案 1 :(得分:0)
您可以使用 re.match 来测试字符串是否与您的搜索模式匹配,否则返回None。
import re
test = ['kim_reel05_scn0101_shot0770',
'n74_reel05_scn0001_shot0700',
'ninehundred_reel05_scn0001_shot0700',
'proj_reel05_scn0001_shot0700',
'n74_reel05_scn0001_shot0700',
'ninehundred_reel05_scn0001_shot0700']
valid = re.compile(r'\bproj_reel[\d]{2}_scn[\d]{4}_shot[\d]{4}\b')
for t in test:
if re.match(valid, t):
#proceed
print('Valid:', t)
else:
print('Invalid:', t)
输出:
Invalid: kim_reel05_scn0101_shot0770
Invalid: n74_reel05_scn0001_shot0700
Invalid: ninehundred_reel05_scn0001_shot0700
Valid: proj_reel05_scn0001_shot0700
Invalid: n74_reel05_scn0001_shot0700
Invalid: ninehundred_reel05_scn0001_shot0700