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
".