Regex RAR архив

У меня есть это регулярное выражение:

.*part0?0?1.rar

и это:

матч

S01.rar
S23.part1.rar
s4.part01.rar
Movie.rar
Youtube Movie.part1.rar
123Mov Ddaa.part01.rar
123Mov Ddaa.part001.rar

не совпадают

S01.part02.rar
S2.part4.rar
Movie.part3.rar
Youtube Movie.part08.rar
123Mov Ddaa.part002.rar

я тестирую с https://regexr.com/

Как я могу все слова под соответствием матча? Извините за мой очень очень плохой английский: /

1 ответ

Решение

Оказывается, вы хотите использовать регулярные выражения в Bash. Необходимое регулярное выражение будет соответствовать любой строке, содержащей part не сопровождается номером, отличным от 1, 01 или же 001число после part должен быть больше чем 1 и отрицать результат.

Посмотреть демо- печать Bashanything:

file="Youtube Movie.part01.rar"
regex='part(0*[2-9][0-9]*|0*1[0-9]+)\.rar'
if ! [[ $file =~ $regex ]]
then
    echo "anything"
fi

Вот,part(0*[2-9][0-9]*|0*1[0-9]+)\.rar Матчи

  • part - буквальная подстрока part
  • (0*[2-9][0-9]*|0*1[0-9]+) - любой из 2 вариантов:
    • 0* - ноль или больше 0 символы
    • [2-9] - цифра от 2 в 9
    • [0-9]* - любые цифры 0+ ASCII
    • | или же
    • 0*1[0-9]+ - ноль или больше 0 символы, 1 а затем одну или несколько любых цифр
  • \. - точка
  • rar - а rar подстрока.

if ! [[ $file =~ $regex ]] означает "если $regex не соответствует $file, шоу anything".

Другие вопросы по тегам