我有这个正则表达式:
.*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
进行测试
我怎么能匹配匹配的所有单词?我非常非常糟糕的英语:/
答案 0 :(得分:0)
事实证明你想在Bash中使用正则表达式。您需要的正则表达式将匹配包含part
的任何字符串,而不是1
,01
或001
以外的数字,即part
后的数字必须是大于1
并否定结果。
请参阅Bash demo打印anything
:
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]+)
- 两种选择中的任何一种:
0*
- 零个或多个0
字符[2-9]
- 从2
到9
[0-9]*
- 任何0+ ASCII数字|
或0*1[0-9]+
- 零个或多个0
字符,1
,然后是一个或多个任意数字\.
- 一个点rar
- rar
子字符串。 if ! [[ $file =~ $regex ]]
表示"如果$regex
与$file
不匹配,则显示anything
"。