Вопросы с тегом «regular-expression»

Регулярные выражения (часто сокращаются до «регулярных выражений») - это выражения, написанные на декларативном языке, используемые для сопоставления шаблонов в строках.

26
Найти и заменить с помощью регулярных выражений

У меня есть файл с кучей пользовательских настроек по умолчанию. Я хочу изменить часть текста, но я с трудом придумываю совпадения и заменители. Используя следующий пример: ############################################################################### # Trackpad, mouse, keyboard, Bluetooth...

22
Возможен ли поиск в системе регулярных выражений vim?

Я столкнулся со многими ситуациями в vim, где было бы полезно иметь обходные утверждения. Я попытался использовать стандартный синтаксис lookaround ( (?=)и (?!)т. Д.) , Но, похоже, vim не поддерживает это. Имеет ли vim эквивалентный синтаксис для таких...

19
Как сделать регулярные выражения не жадными?

Я пытаюсь использовать регулярные выражения для замены текста в файле (заменить полный URL-адрес просто протокол / домен /): :%s/\(https\?:\/\/.*?\/\).*/\1/gc К сожалению .*?не совпадает строка, даже пытаясь уйти от ?квантификатора? Как избежать использования жадного квантификатора в...

18
Могу ли я найти объединяющий символ Unicode в Vim?

У меня есть файл с символом ã(строчная + комбинационная тильда). Encodingи fileencodingоба utf-8. gaшоу <a> 97, hex 61, octal 141 <~> 771, Hex 0303, Octal 1403 (но с фактическим сочетанием тильды в <>) и g8показывает 61 + cc 83 Поиск с /a\%u0303работает нормально. Поиск просто...

17
Шаблон синтаксиса Vim для выделения аргумента ключевого слова python

Я борюсь с изучением регулярных выражений vim (я тоже не очень хорошо знаю другие регулярные выражения), поэтому основная проблема состоит в том, чтобы определить регулярное выражение, которое будет соответствовать some_function_call(simple_value, keyword=value) Ключевое слово в этом примере. Таким...

16
Совместимы ли магические выражения Vim с известными классами регулярных выражений?

Синтаксисы регулярных выражений многих инструментов Unix часто представляют собой POSIX-кодированные базовые и расширенные регулярные выражения (BRE и ERE, соответственно) и, в некоторых современных реализациях, в стиле Perl (PCRE является реализацией этого). Существует ли однозначное соответствие...

16
Почему Vim Regex не позволяет более 9 групп захвата?

Из :h E65рисунка видно, что Vim не позволяет использовать более 9 групп захвата в команде замещения. Например, будет работать следующая команда: s/\v(a)(b)(c)(d)(e)(f)(g)(h)(i)/\9\8\7\6\5\4\3\2\1 Но этот с еще одной группой захвата потерпит неудачу:...

15
Как запустить: заменить только часть строки, а не всю?

У меня есть такая строка: function my_function(argument, another argument, but there are spaces) Я хочу заменить символы пробела (внутри имен аргумента) подчеркиванием. Таким образом, я хотел бы использовать: :s/\ /_/g но как я могу выбрать не применять его ко всей строке, а начинать, скажем, с...

15
Регулярное выражение в Vi: Как использовать классы символов внутри групп? (например, [\ s \ w])

В Vim класс символов \sсоответствует любому пробелу. Когда я использую эти специальные символы в группах, например, [\s\w]он не соответствует ни одному пробелу или символу слова, он соответствует sили w. Как использовать классы персонажей внутри...

14
Есть ли способ конвертировать литерал регулярного выражения Vim в различные магические режимы?

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

13
В чем смысл \ r и \ n, означающих разные вещи в команде s?

Мы все знаем, что при поиске \nэто перевод строки и \rвозврат каретки ( ^M), но при замене \rэто перевод строки, тогда \nкак null byte ( ^@). Каково происхождение этой асимметрии? Учитывая, что это поведение ... по меньшей мере своеобразно (и весьма контрпродуктивно, когда вы ошибаетесь в первый...

13
Сворачивание по шаблону поиска по регулярному выражению

Я получил простой текстовый файл с разделенными пробелами столбцами значений. Как это: AU 3030 .... ... .... AU 3031 .... ... .... AU 3032 .... ... .... AU 3033 .... ... .... IT 48100 ... .. ..... IT 40100 ... .. ..... IT 48123 ... .. ..... UK 3333 ... ... ..... UK 4444 ... ... ..... UK 5555 ......

12
Удаление диапазона из n строк до и после совпавшей строки?

У меня есть повторяющийся файл конфигурации, и я хотел бы сопоставить регулярное выражение и удалить диапазон строк до и после совпадения. Я также хотел бы удалить совпадение в одной команде. Я могу использовать... :g/match/-1d ... несколько раз, чтобы удалить более одной строки перед матчем ......

11
В чем разница между атомами '\ zs' и '\ @ <=' в регулярном выражении Vim?

Вот что я получаю из документации: \zs«запускает выделенную часть» после сопоставления с предыдущим регулярным выражением и \@<=«запускает выделенную часть» после сопоставления с предыдущим атомом . Но я не совсем понимаю тонкости этого, так кто-нибудь может объяснить, как они отличаются немного...

11
Сортировать на основе слов, разделенных запятыми

Обычная команда: sort может сортировать строки на основе столбца или виртуального столбца ( \%cили \%v), может ли логический столбец более высокого уровня использоваться в качестве ключа сортировки? Использование регулярного выражения выглядит немного сложнее для этого сценария (столбец находится в...

10
Альтернатива экранированию косых черт в поиске и замене длинных строк

Есть ли альтернатива в поиске и замене vim для строк, кроме необходимости экранировать каждый специальный символ в строке. Например, если я хочу сопоставить следующую строку и заменить что-то [ERROR] Login unsucessful Тогда я должен сделать :%s/\[ERROR\]\ Login\ unsucessful/something/g И это...

10
Удалить n строк пропустить 1 строку сценария

Я хочу создать базовый скрипт Vim, который просто удаляет n строк, пропускает 1 строку и повторяется до конца документа. Меня не интересуют конкретные совпадения, я просто хочу удалить строку. Например; Поэтому я хочу повторить команду 3ddjдля всего документа. Text I want to keep. Text I want to...

10
Применить команду нормального режима для регулярных выражений

Я использую следующее регулярное выражение для сопоставления строки документации под определением функции Clojure: \vdefn.*\n\s*\zs"([^"]|\n)*" Есть ли способ запустить команду нормального режима gq(формат строки) для всех совпадений этого шаблона в данном...