Я работаю над формулой регулярного выражения, которая проверяет, имеет ли предоставленный файл для обработки один из следующих форматов:

  1. SN1234_filename.pdf
  2. SN1234_filename.pdf.zip

Вот что я сейчас имею:

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

Это работает в настоящее время, но я хочу избавиться от блока if-else, который устанавливает переменную FORMAT. Как я могу оптимизировать переменную FORMAT?

1 ответ1

0

Используйте ? оператор, который соответствует нулю или одному вхождению предыдущего символа или группы:

^SN[0-9]+_[a-zA-Z0-9]+\.pdf(\.zip)?$

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .