pattern1 = re.compile(r'/([^/]*)/([^/]*)/([0-9]*) - (.*)\.[^.]*')
artist,release,Tracknumber,Title = pattern1.match(file1).groups()
pattern2 = re.compile(r'/\[([^]]*)\] ([^/]*)/([0-9]*) - (.*) - (.*)\.[^.]*')
catno,release,Tracknumber,artist,Title = pattern2.match(file2).groups()
(где file1
и file2
- пути, которые вы указали выше).
Первое: вы захватываете что-то, сопоставленное регулярному выражению с круглыми скобками. Таким образом, все, что находится в скобках ниже, будет отображаться как элемент в матче.
Второе: вы сопоставляете все, кроме косой черты, с кодом регулярного выражения, например [^/]
. Таким образом, чтобы соответствовать многим вещам между косыми чертами, вы делаете [^/]*
.
Соединяя их вместе, чтобы захватить художника в вашей первой строке, вы делаете /([^/]*)/
. Затем вы делаете это снова, чтобы получить релиз.
В-третьих: для совпадения с любой цифрой вы используете [0-9]
. Таким образом, чтобы соответствовать любой строке цифр, вы используете [0-9]*
.
Повторно применяйте эти принципы, и вы сможете понять вышесказанное.