У меня есть регулярное выражение для сопоставления имен файлов, которые выглядят следующим образом:
name - subname goes here v4 03.txt
name - subname long 03.txt
name - subname v4 #03.txt
Я хочу извлечь имя и вложенное имя без каких-либо дополнительных данных.Я в состоянии извлечь данные просто отлично, проблема, которая дает мне ошибки - это часть v4
(это маркер версии, который является av и цифрой после него, и он не включен везде), я хочу исключить его, ноон извлекает его вместе с именем ...
Мое регулярное выражение выглядит следующим образом:
^([\w \.]+)(?:-)?([\w \.-]+)? #?\d+
Я пытался сделать что-то подобное, но это работает только без ?
в конце"(?:v\d+ )?
", и тогда он не может соответствовать именам файлов без версии:
^([\w \.]+)(?:-)?([\w \.-]+)? (?:v\d+ )?#?\d+
Как мне заставить это работать?