Python Regex:尝试创建模式

时间:2014-09-29 20:45:18

标签: python regex string

我尽力检查互联网和堆栈信息,但我无法将我的头围绕正则表达式为我的实用程序。

我有一个遵循这种模式的字符串:

[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,然后是否继续! 我不知道如何编写这个表达式,因为老实说我很难理解如何使用特殊字符。

有人想帮帮我吗?

2 个答案:

答案 0 :(得分:2)

^proj_reel[0-9]{2}_scn[0-9]{4}_shot[0-9]{4}$

你可以试试这个。不要忘记设置gm标志。参见演示。

http://regex101.com/r/nA6hN9/35

答案 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