如何使用正则表达式“量化”可变数量的行?

时间:2016-06-27 10:14:33

标签: regex parsing quantifiers

假设您知道某些文本部分的起始行和结束行,但某些行中的字符和起始行与结束行之间的行数是可变的,ála:

AAA
 BBBB
 CC
 ...
 ...
 ...
 XX
 YYY
 ž

你使用什么量词,如:

AAA \ nbbbb \ NCC \ N(。* \ n)的+ XX \ nyyy \ nZ上\ n

将这些文本部分分组?

4 个答案:

答案 0 :(得分:0)

您可以使用s标记来匹配多行文字,您可以这样做: ~\w+ ~s。 这里有一个类似的问题: Javascript regex multiline flag doesn't work

答案 1 :(得分:0)

如果我理解正确,您知道您的文字以aaa\nbbbb\ncc开头,以xx\nyyy\nZ\n结尾。您可以使用aaa.+?bbbb.+?cc(.+?)xx.+?yyy.+?Z,以便所有操作员都不会贪婪,并且您不会意外地同时捕获两个组。这些组之间的文本将位于匹配组1中。您还需要转动导致点匹配新行的设置。

答案 2 :(得分:0)

试试这个:

aaa( |\n)bbbb( |\n)cc( |\n)( |\n){0,1}(.|\n)*xx( |\n)yyy( |\n)Z

(| \ n)匹配空格或换行符(因此您的起始和结束短语可以拆分为不同的行)

RegExr

答案 3 :(得分:0)

在一天结束时,使用Kate对我有用的是:

( )+aaa\n( )+bbbb\n( )+cc\n(.|\n)*( )+xx\n( )+yyy\n( )+Z\n

使用这样的正则表达式可以清除相当多的垃圾页面。