我有这样的判决:
.*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/进行测试
我怎么能把比赛中的所有单词都匹配起来呢?代表我非常糟糕的英语:/
发布于 2017-11-04 22:03:36
原来你想在Bash中使用正则表达式。所需的正则表达式将匹配任何包含part的字符串,该字符串没有跟随1、01或001以外的数字,即part后面的数字必须大于1并否定结果。
见巴什演示打印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,然后一个或多个任意数字
\. -a点rar -一个rar子字符串。if ! [[ $file =~ $regex ]]的意思是“如果$regex与$file不匹配,则显示anything”。
https://stackoverflow.com/questions/47115958
复制相似问题