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

Posted

技术标签:

【中文标题】您如何使用正则表达式“量化”可变数量的行?【英文标题】:How do you "quantify" a variable number of lines using a regexp? 【发布时间】:2016-06-27 10:14:33 【问题描述】:

假设你知道某段文本的起止行,但有些行中的字符和起止行之间的行数是可变的,á la:

aaa bbbb 抄送 ... ... ... xx 年年 Z

你用什么量词,比如:

aaa\nbbbb\ncc\n(.*\n)+xx\nyyy\nZ\n

将这些文本部分作为一个组进行解析?

【问题讨论】:

开头和结尾的短语可以有换行符吗? 【参考方案1】:

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

【讨论】:

注意到我知道的第一行“aaa”、“bbbb”、...和最后...、“yyy”、“Z”行的确切内容。在这些行之间,任何东西都可能出现在许多行中。我主要将正则表达式与 eclipse、kate 和 office 的作者一起使用【参考方案2】:

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

【讨论】:

【参考方案3】:

试试这个:

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

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

RegExr

【讨论】:

【参考方案4】:

归根结底,使用 Kate 对我有用的是:

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

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

【讨论】:

以上是关于您如何使用正则表达式“量化”可变数量的行?的主要内容,如果未能解决你的问题,请参考以下文章

notepad++正则表达式

通过相等数量的元音和辅音进行正则表达式验证[关闭]

正则表达式-grep工具常见选项的使用

从 BigTable 中删除与 BigTable 中的正则表达式匹配的行

正则表达式:删除包含“帮助”等的行

如何通过熊猫过滤满足正则表达式的行