RegEx, чтобы выбрать после строки - PullRequest
2 голосов
/ 05 марта 2020

Я использую vim для редактирования документа - выдержка из которого:

--

aaa bbb
ccc ddd
eee fff

--

ggg hhh
iii jjj
kkk lll

--

Я бы хотел выбрать все строки, которые идут после (обеих) строк с "-" и новые линий. В этом примере я бы хотел выбрать «aaa bbb» и «ggg hhh». Возможны ли «регулярные выражения» на уровне строк в регулярном выражении?

Ответы [ 2 ]

5 голосов
/ 05 марта 2020

Vim имеет отличную функцию, которой вы можете воспользоваться здесь. Следующая команда будет соответствовать двум запрошенным строкам (на примере поиска):

/--\n\n\zs.*

Объяснение:

  • / - начать поиск
  • --\n\n - предикат, насколько я понимаю, вопрос
  • \zs - говорит vim начать здесь фактическое совпадение и выбросить все до этого
  • .* - любой символ.

Маркер \zs позволяет вам сообщить vim, где на самом деле начинается сопоставление с шаблоном, даже если регулярное выражение в целом должно совпадать. Существует дополнительный токен \ze, который сообщает vim, где заканчивать совпадение.

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

Для получения дополнительной информации об этой функции посмотрите :help /\zs и :help /\ze.

0 голосов
/ 05 марта 2020

Если у вас есть только такие данные, которые вы предоставили, вы можете использовать взгляды с символами новой строки. В основном совпадение строки после "-" и пустой строки. И ответ «возможно ли посмотреть на уровне строки»: Да, разрыв строки - это не что иное, как символ, обозначенный \n.

(?<=--\n\n).*

https://regex101.com/r/q5VESm/1

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