«Регулярное выражение» действительно определяет алгоритмы, а не синтаксис.Это означает, что разные разновидности регулярных выражений будут использовать разные символы для обозначения одного и того же;или они будут ставить перед некоторыми специальными символами обратную косую черту, а другие нет.Как правило, они все равно будут работать одинаково.
Когда-то POSIX определял синтаксис Basic Regular Expression (BRE), которому в основном следует Vim.Вскоре после этого было также выпущено предложение синтаксиса расширенного регулярного выражения (ERE).Основное различие между ними состоит в том, что BRE имеет тенденцию обрабатывать больше символов как литералы - «а» - это «а», но также «(» - это «(», а не специальный символ), и поэтому включает в себя больше обратной косой черты вдать им «особое» значение.
Обсуждение сложных различий между Vim и Perl в отдельном комментарии здесь полезно, но также стоит упомянуть несколько простых способов, которыми регулярные выражения Vim отличаются от «принятых».«норма (под которой вы, вероятно, подразумеваете Perl.) Как уже упоминалось выше, они в основном отличаются по использованию предыдущего обратного слеша.
Вот несколько очевидных примеров:
Perl Vim Explanation
---------------------------
x? x\= Match 0 or 1 of x
x+ x\+ Match 1 or more of x
(xyz) \(xyz\) Use brackets to group matches
x{n,m} x\{n,m} Match n to m of x
x*? x\{-} Match 0 or 1 of x, non-greedy
x+? x\{-1,} Match 1 or more of x, non-greedy
\b \< \> Word boundaries
$n \n Backreferences for previously grouped matches
Это дает вампредставление о самых важных различиях. Но если вы делаете что-то более сложное, чем основы, я предлагаю вам всегда предполагать, что Vim-regex будет отличаться от Perl-regex или Javascript-regex и обращаться к чему-то вроде Веб-сайт Vim Regex .