Я решил изучить основы регулярных выражений. Я использую уроки Regex One в Интернете, и некоторое время я застрял на уроке 11 , но я думаю, что получил это сейчас.
Это была задача.
Msgstr "Написать регулярное выражение, которое соответствует только именам файлов (не включая расширение) файлов PDF ниже."
task text capture
capture text file_a_record_file.pdf file_a_record_file
capture text file_yesterday.pdf file_yesterday
skip text testfile_fake.pdf.tmp
Существует поле ввода, в котором вы вводите шаблон для выполнения задачи. После некоторых проб и ошибок это то, что я придумал.
^(file_a_record_file)\.pdf$
Это будет соответствовать имени файла file_a_record_file.pdf, но только "захватить" file_a_record_file. Какая разница? ... между соответствием и "захватом"? И как это полезно? Как это "групповое соответствие"?
Теперь это работает для первого файла, но не для второго файла. Задача говорит, что мне нужно создать шаблон, который будет соответствовать и захватывать имя файла обоих файлов, за исключением расширения. Так вот что я придумал дальше.
^(file_.*)\.pdf$
Поскольку оба имени файла начинаются с file_, я подумал, что было бы неплохо сравнить с этим, а затем сказать ему, чтобы он совпадал с любым последующим символом, а затем выйти из группы с круглыми скобками ("group" - это то, что находится внутри скобок, верно ?) и экранируйте точку с обратной косой чертой и заканчивайте расширением имени файла.
Можно ли это описать более жестко? Правильные решения не приведены на сайте. Поэтому мне нечего сравнивать мои ответы. Жаль, потому что я думаю, что это хорошее введение в регулярные выражения. Примеры, приведенные для каждого урока, иногда трудно понять.
И снова, как это полезно? Он упоминает что-то о командной строке, я думаю, он имеет в виду, что она может быть использована для повторного использования команд или что-то в этом роде ... ну, я не совсем понимаю, что он говорит.
Представьте, что у нас есть инструмент командной строки, который копирует каждый файл в каталоге на сервер, только если он там еще не существует, и в результате печатает каждое имя файла. Теперь, если я хочу выполнить другую задачу для каждого из этих имен файлов, мне понадобится не только регулярное выражение, которое будет соответствовать имени файла, но и какой-то способ извлечь эту информацию.
Извлечение информации? О чем он говорит? Может кто-нибудь сказать мне, как это полезно и привести пример из реальной жизни?