您如何使用正则表达式“量化”可变数量的行?
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
使用这样的正则表达式,您可以清除相当多的垃圾页面。
【讨论】:
以上是关于您如何使用正则表达式“量化”可变数量的行?的主要内容,如果未能解决你的问题,请参考以下文章