У меня большой HTML-файл с разметкой, который выглядит следующим образом:
<p class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="font-size: small; font-family: Times New Roman;">stuff here</span>
</p>
Я пытаюсь сделать Vim поиска и замены , чтобы избавиться от всего class=""
и , style=""
но у меня возникают проблемы , делая матч ungreedy.
Моя первая попытка была
%s/style=".*?"//g
но Vim, кажется, не нравится ?
. К сожалению, удаление ?
делает матч слишком жадным.
Как я могу сделать мой матч несвязным?
regex
vim
regex-greedy
Марк Бик
источник
источник
Ответы:
Вместо
.*
использования.\{-}
.%s/style=".\{-}"//g
Также см
:help non-greedy
источник
\v
(очень магический флаг), вы захотите использовать.{-}
.{1,3}
делает (фигурные скобки). Знак минус-
означает: повторить как можно меньше (немного == минус);)Нежадный поиск в vim выполняется с помощью оператора {-}. Нравится:
просто попробуй:
источник
Что случилось с
источник
Если вам удобнее использовать синтаксис регулярных выражений PCRE, который
у вас [g] vim скомпилирован с возможностью perl, протестируйте используя
и проверить особенности; если есть + perl, ты идешь)
попробуйте поискать / заменить используя
Пример. Поменяйте местами атрибуты src и alt в теге img:
источник
perldo
прекрасно работает, но, к сожалению, не выделяет выбранный тест при наборе регулярного выражения.Я обнаружил, что хорошее решение этого типа вопроса:
(или perl, если вы предпочитаете). IOW, вместо того, чтобы изучать особенности регулярных выражений vim, используйте инструмент, который вы уже знаете. Использование Perl сделает? модификатор работы, чтобы разогнать матч.
источник
/pattern
проверить правильность сопоставления с шаблоном перед его применением и использованиеc
модификатора в регулярном выражении vim также неплохо :)С
\v
(как предлагается в нескольких комментариях)источник
Плагин eregex.vim обрабатывает не жадные операторы в стиле Perl
*?
и+?
источник
G'day,
Обработка регулярных выражений в Vim не слишком блестящая. Я обнаружил, что синтаксис регулярного выражения для sed примерно соответствует возможностям vim.
Я обычно устанавливаю подсветку поиска (: set hlsearch) и затем играю с регулярным выражением после входа в косую черту, чтобы войти в режим поиска.
Редактировать: Отметьте, этот трюк, чтобы минимизировать жадное сопоставление, также описан в превосходной книге Дейла Догерти "Sed & Awk" ( очищенная ссылка Amazon ).
Глава третья «Понимание синтаксиса регулярных выражений» - отличное введение в более примитивные возможности регулярных выражений, связанные с sed и awk. Только краткое чтение и настоятельно рекомендуется.
НТН
веселит,
источник
\v
его, это поможет очистить синтаксис.