我正在尝试在perl脚本中使用正则表达式来解析文件以匹配:
空格和“\ n”(换行符)交替出现 - 即首先我希望它匹配空格然后是“\ n”,然后是空格(在文件的新行上......等等)
感谢, -AD
答案 0 :(得分:2)
你可以这样做:
if($file =~/ |(?: \n)+ ?/) {
print $file." has the pattern\n";
}
使用的正则表达式是|(?: \n)+ ?
匹配:
space\n
后跟一个
可选space
答案 1 :(得分:1)
试试这个:
(^ \n)+
答案 2 :(得分:0)
要匹配行的开头,请使用插入符号^
。
要匹配空格,您可以使用文字空间或任何空格,使用\s
。
将sgm
放在模式的末尾,例如/pattern/sgm
会使其跨行匹配。
如果您有兴趣,可以在perldoc perlfaq6获取更多信息和一些示例。
答案 3 :(得分:0)
你说你希望你的模式中的第二个空格在新行上。现在你是否能够得到这个取决于你从哪里得到你的字符串(好吧,也许不是哪里,但我想你明白了我的观点)。如果您正在解析的数据是从文件中读取的,那么您必须以段落模式读取该文件(即每个段落而不是每一行将构成一个记录)。
假设您正在使用文件句柄FILE,请执行以下操作:
{
local $/ = ""; # one paragraph constitutes one record
while (<FILE>) {
if (/ \n /) {
print "Found one match!\n";
}
}
}
请注意,我使用的正则表达式模式没有考虑多次出现的空格 - 换行符空间,因为我不确定你究竟想要做什么。但无论如何,我的主要观点是使用
local $/ = "";
HTH