正则表达式:捕获任意(动态)行数

时间:2019-06-13 16:35:39

标签: regex pcre

我一直在尝试匹配以下内容:

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 个答案:

答案 0 :(得分:1)

在这里,我们可能想设计一个只传递换行符的表达式,例如

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

Demo 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]*)

如果我们的第二组将有多行。

Demo 2

建议

The fourth bird建议:

  

您可以使charachter类变得不贪婪,以防止过度匹配([\ s \ S] *?)

随后表达式将变为

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

例如。

Demo 3