Соответствие одинарных или двойных кавычек в Vim - PullRequest
3 голосов
/ 10 мая 2011

Я с трудом пытаюсь сопоставить строки с одинарными или двойными кавычками с помощью механизма регулярных выражений Vim.

Проблема в том, что я назначаю регулярное выражение переменной, а затем использую его для воспроизведения с matchlist.

Например, давайте предположим, что я знаю, что я нахожусь в строке, содержащей строку в кавычках, и хочу сопоставить ее:

let regex = '\v"(.*)"'

Это будет работать, чтобы соответствовать чему-либо, чтодвойные кавычки.Точно так же это будет соответствовать одинарные строки в кавычках:

let regex = "\v'(.*)'"

Но если я попытаюсь использовать их оба, например:

let regex = '\v['|"](.*)['|"]'

или

let regex = '\v[\'|\"](.*)[\'|\"]'

Тогда Vimне знает, как с этим справиться, потому что думает, что некоторые кавычки не закрываются в действительном определении переменной, и портит регулярное выражение.

Что было бы лучшим способом отловить одинарные или двойные кавычкистроки с регулярным выражением?

Возможно (возможно!) Я упускаю что-то действительно простое, чтобы можно было использовать обе кавычки и не беспокоиться о окружающих кавычках для фактического регулярного выражения.

Примечаниечто я предпочитаю одинарные кавычки для регулярного выражения, потому что таким образом мне не нужно использовать двойную обратную косую черту для экранирования.

Ответы [ 3 ]

9 голосов
/ 10 мая 2011

Вам необходимо использовать обратные ссылки. Вот так:

let regex = '\([''"]\)\(.\{-}\)\1'

Или с очень магическим

let regex = '\v([''"])(.{-})\1'

В качестве альтернативы вы можете использовать (так как это не помешает вашим матчам):

let regex = '\%("\([^"]*\)"\|''\([^'']*\)''\)'

или с очень магией:

let regex = '\v%("([^"]*)"|''([^'']*)'')'
0 голосов
/ 20 ноября 2011

Это работающий скрипт, который я пишу для синтаксиса строк в кавычках.

syntax region myString start=/\v"/ skip=/\v(\\[\\"]){-1}/ end=/\v"/
syntax region myString start=/\v'/ end=/\v'/

Вы можете использовать \v(\\[\\"]){-1}, чтобы что-то пропустить.

0 голосов
/ 10 мая 2011

посмотрите на этот пост

Замена кавычек вокруг строк в Vim?

может как-то помочь

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