Оптимізуйте формулу регулярного вираження для перевірки імен файлів


0

Я працюю над формулою регулярного вираження, яка перевірить, чи наданий файл для обробки має один із наступних форматів:

  1. SN1234_name_pdf.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?

Відповіді:


0

Використовуйте ?оператор, який відповідає нулю або одній появі попереднього символу чи групи:

^SN[0-9]+_[a-zA-Z0-9]+\.pdf(\.zip)?$
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.