这是我的典型目录名:someFolder/S01/E01/0
。我想使用正则表达式来解析它并确定它是否具有类似<some folder>/S[0-9][0-9]/E[0-9][0-9]/0
的模式。 E[0-9][0-9]
必须在S[0-9][0-9]
之后,目录名称必须以/0
这是我尝试过的不起作用:
re.match('^(.*/)(\/E[0-9][0-9]\/0\/)$', '/ll/example/series/Seinfeld.1989/S01/E01/0')
答案 0 :(得分:1)
试试这个:
^.*\/S([0-9][0-9])\/E([0-9][0-9])\/0$
^
和$
作为开始和结束锚点.*
匹配任何字符\/S([0-9][0-9])
匹配斜杠\
后跟文字S
,然后两位数代表季节编号\/E([0-9][0-9])
匹配斜杠\
后跟文字E
,然后两位数代表剧集编号\/0
匹配斜杠\
后跟0
作为一个额外的奖励,它将分别在第1组和第2组中获得季节数和剧集编号:)
答案 1 :(得分:0)
试试这个:
re.match(r'.+/S\d\d/E\d\d/0$', '/ll/example/series/Seinfeld.1989/S01/E01/0')
这将匹配以/S[0-9][0-9]/E[0-9][0-9]/0
结尾的任何文件夹,但开头纯粹是任意的。您可以通过以下方式使其仅与单个级别的文件夹匹配:^[^/]+/S\d\d/E\d\d/0$
。如果您需要提取匹配项,也可以对单个模式进行分组。
答案 2 :(得分:0)
(.*)
贪婪,所以它匹配包括斜杠的完整字符串。尝试(.*?)
为了使它不合适,它将匹配到下一组。
答案 3 :(得分:0)
您也可以尝试:([^/]*)/(S[0-9][0-9])/(E[0-9][0-9])/0$