Как искать (используя регулярное выражение) литерал регулярного выражения в тексте? - PullRequest
1 голос
/ 30 ноября 2010

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

Это сработало (после небольшого переделывания), но заставило меня задуматься, есть ли лучший способ сделать такие вещи.

Исходное регулярное выражение (цитируется): '/^\//' для замены на /^\//

и шаблон поиска / замены, который я использовал: s/'\/\^\\\/\/'/\/\^\\\/\//g

Спасибо!

Ответы [ 3 ]

4 голосов
/ 30 ноября 2010

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

:s#'\(\\^\\//\)'#\1#

Я не знаю, сработает ли это для вашего случая, потому что приведенный вами пример и приведенное вами регулярное выражение не совпадают. (Перечисленное вами регулярное выражение будет соответствовать '/^\//', а не '\^\//'. Шахта будет соответствовать последнему. Настройте при необходимости.)

1 голос
/ 30 ноября 2010

Не могли бы вы полностью отказаться от регулярных выражений, используя простой простой поиск и замену строк?

0 голосов
/ 01 декабря 2010

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

: s: '\ (* \.)': \ 1:

Я использовал vim 7.1 для этого. Конечно, вы можете визуально пометить область перед (для которой должно выполняться это выражение (используйте «v» или «V» и соответственно перемещайте курсор)).

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