Я пытаюсь сформулировать регулярное выражение, которое совпадает с именами набора файлов, которые я хотел бы пакетно обработать в Vim, но обнаружил, что не могу использовать \ | (регулярное выражение ИЛИ), как и ожидалось ...
В частности, я хотел бы создать список аргументов, состоящий из следующих файлов в текущем каталоге:
f0148.e, f0149.e, f0150.e ... f0159.e (i.e., 12 files total)
Введенная мной команда vim выглядит следующим образом:
:arg f01\(\(4[89]\)\|\(5[0-9]\)\).e
Vim выполняет эту команду без какого-либо заметного результата - сообщения отсутствуют, а вывод из: args остается неизменным (не выдает требуемый список имен файлов).
Если я разделю регулярное выражение на:
:arg f01\(\(4[89]\)\).e
(примечание: оставляя скобки здесь, как в приведенном выше полном выражении)
... и ...
:arg f01\(\(5[0-9]\)\).e
... затем :args
производит f0148.e f0149.e
и f0150.e ... f0159.e
соответственно (по желанию).
Кроме того, если я введу вышеупомянутый список имен файлов в текстовом файле и использую вышеупомянутое регулярное выражение в качестве шаблона поиска (т. Е. /f01\(\(4[89]\)\|\(5[0-9]\)\).e
), он будет работать так же, как требуется.
Таким образом, я определил, что чередование (\|)
каким-то образом приводит к сбою выражения. Обратите внимание, что я использую Vim в Windows 7, если это важно (так как обратная косая черта и труба являются допустимыми символами в командной строке Windows).
Быстрый обходной путь будет использовать:
:arg f014[89].e
:argadd f015[0-9].e
... но мне бы очень хотелось выяснить, как заставить работать вышеупомянутое регулярное выражение.
Спасибо за вашу помощь!