正则表达式解析目录,找到文件夹的模式

时间:2017-05-30 20:56:28

标签: regex

这是我的典型目录名: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')

4 个答案:

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

Regex101 Demo

作为一个额外的奖励,它将分别在第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$

Regex101 demo