Как проверить, соответствует ли строка шаблону в vim

#regex #vim

#регулярное выражение #vim

Вопрос:

Я пытаюсь написать выражение fold, но я не могу заставить регулярное выражение работать.

Строка, которую я хочу проверить, и регулярное выражение являются:

 # -- Heading 1 --
  
 ^.*-{2}s([_a-zA-Z0-9]s*) s-{2}$
  

какой синтаксис я использую для выполнения проверки?
Я пробовал: (похоже, не сработало)

if match(line , "v regex") >= 0
if line =~ "v regex"

Ответ №1:

Вы можете использовать либо match() , либо =~ , но регулярное выражение неверно.

Есть о чем догадываться, поскольку я не знаю всех потенциальных входных данных, но я думаю, вы имели в виду:

 ^.*-{2}s%([_a-zA-Z0-9] s) -{2}$
  

Или немного другой вариант с использованием символьных классов:

 ^v.*-- [_[:alnum:][:blank:]] --$
  

Или, возможно, с использованием отрицаемой коллекции (соответствующей любому символу, кроме - ):

 ^v# -- [^-]  --$
  

Сходите с ума!

Комментарии:

1. Спасибо. Я перепробовал все ваши регулярные выражения, но они также не сработали. Затем я понял, что проблема заключалась в том, что я заключал их в двойные кавычки. Изменил их на single, и thew отлично сработал.