Многие люди говорят, что мы можем обойтись без ленивых квантификаторов в регулярных выражениях, но я только что столкнулся с проблемой, которую не могу решить без них (здесь я использую sed).
СтрокаЯ хочу, чтобы процесс состоял из подстрок, разделенных скоростью слова, например:
anfhwe9.<<76xnf9247 rate 7dh3_29snpq+074j rate 48jdhsn3gus8 rate
Я хочу заменить эти подстроки (кроме слова ' rate ') на 3 черты(---) каждый;результат должен быть:
---rate---rate---rate
Из того, что я понимаю (я не знаю Perl), это можно легко сделать с помощью ленивых квантификаторов.В vim есть ленивые квантификаторы;Я сделал это с помощью этой команды
:s/.\{-}rate/---rate/g
, где \{-}
указывает vim соответствовать как можно меньшему числу.
Однако vim - текстовый редактор, и мне нужно запустить скрипт на многихмашины, на некоторых из которых не установлен Perl.Это также может быть решено, если вы можете указать регулярному выражению, что оно не соответствует атомной группировке, такой как .*[^(rate)]rate
, но это не сработало.
Есть идеи, как этого добиться с помощью регулярного выражения POSIX, или это невозможно?