Regex: захват любого (динамического) количества строк - PullRequest
1 голос
/ 13 июня 2019

Я пытался сопоставить следующее:

First Group:Line1,
Line2,
..
LineX
Second Group:Some_Sample_text

С этим запросом:

First Group:(?<first_group>.+\n*\n)Second Group:(?<second_group>.*)

Моя главная цель - захватить любое количество строк между Line1 и LineX (потому что я не могу предвидеть, сколько их будет), но так как нет никакой возможности соответствовать концу файлов, мне, вероятно, придется использовать жетоны "\ n". Я также попробовал с IF и THEN заявлениями, но просто не могу заставить его работать

Любые идеи приветствуются.

1 Ответ

1 голос
/ 13 июня 2019

Здесь мы можем захотеть разработать выражение, которое будет просто проходить новые строки, например

First Group:([\s\S]*)Second Group:(.*)
First Group:([\d\D]*)Second Group:(.*)
First Group:([\w\W]*)Second Group:(.*)

Демо 1

и мы расширим его до

First Group:([\s\S]*)Second Group:([\s\S]*)
First Group:([\d\D]*)Second Group:([\d\D]*)
First Group:([\w\W]*)Second Group:([\w\W]*)

Если бы наша вторая группа имела несколько строк.

Демо 2

Рекомендации

Четвертая птица советует:

Вы можете сделать класс charachter не жадным, чтобы предотвратить переопределение ([\ s \ S] *?)

которое тогда станет выражением

First Group:([\s\S]*?)Second Group:([\s\S]*)

например.

Демо 3

...