正则表达式rar存档

时间:2017-11-04 21:48:48

标签: regex bash 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 个答案:

答案 0 :(得分:0)

事实证明你想在Bash中使用正则表达式。您需要的正则表达式将匹配包含part的任何字符串,而不是101001以外的数字,即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] - 从29
    • 的数字
    • [0-9]* - 任何0+ ASCII数字
    • |
    • 0*1[0-9]+ - 零个或多个0字符,1,然后是一个或多个任意数字
  • \. - 一个点
  • rar - rar子字符串。

if ! [[ $file =~ $regex ]]表示"如果$regex$file不匹配,则显示anything"。