Use o operador ?
, que corresponde a zero ou uma ocorrência do caractere ou grupo anterior:
^SN[0-9]+_[a-zA-Z0-9]+\.pdf(\.zip)?$
Estou trabalhando em uma fórmula de regex que verificará se o arquivo fornecido para processamento possui um dos seguintes formatos:
Isso é o que eu tenho agora:
MYFILE="SN39586_invoice.pdf"
ISZIP=0
if [ $ISZIP -eq 0 ]; then
FORMAT='^SN[0-9]+\_[a-zA-Z0-9]+\.pdf$'
else
FORMAT='^SN[0-9]+\_[a-zA-Z0-9]+\.pdf\.zip$'
fi
if [[ $MYFILE =~ $FORMAT ]]; then
# Do some processing
else
echo "invalid file format"
fi
Isso está funcionando atualmente, mas eu quero me livrar do bloco if-else que define a variável FORMAT. Como posso otimizar a variável FORMAT?
Tags regex bash-scripting