необязательный регулярное выражение? - PullRequest
4 голосов
/ 12 мая 2011

Как мне сопоставить необязательный символ в выражении регулярного выражения?

Я пытаюсь написать небольшой файл, который выполняет небольшую служебную работу для нашего NAS.

Скрипт просматривает папки внутри указанной корневой папки.

Для моего тестирования корень C:\Users\Solignis\Desktop\Orders

Здесь у меня первый матч, он проверяет, соответствует ли файл нашему стандартному соглашению об именах: город + папка из 3 цифр + номер файла из 3 цифр.

Иногда, хотя у нас есть дополнительные файлы с _1 or _2 для обозначения дополнительной страницы.

Как я могу сделать так, чтобы это выражение регулярного выражения также соответствовало "опциональному" _1 or _2 and sometimes _3 в совпадении?

код:

$file =~ /^ ((C[A|F|L]|ME)) (\d{3}) (\d{3}) \. (PDF) /xmi

Я уверен, что это легко, но у меня все еще есть петли в мозгу из-за необходимости "сверлить" этот гигантский хэш массивов, который я сделал, что-то вроде файлов по 25 КБ в некоторых массивах.

Любая помощь будет принята с благодарностью.

Спасибо

Ответы [ 2 ]

8 голосов
/ 12 мая 2011

Что-то вроде (_[1-3])?

? Соответствует нулю или одному экземпляру.

может быть тем, что вы ищете.

4 голосов
/ 12 мая 2011

Что-то вроде (?: _[1-3] )?, если не хотите поймать эту группу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...