perl regex返回数字而没有字符串

时间:2016-04-24 10:51:59

标签: regex perl regex-greedy

我试图从字符串中删除所有空行。我的字符串是一个有很多随机空行的段落,我正在尝试清理它。

例如:

this is an example

lots of empty

lines

in the paragraph

应该是

this is an example
lots of empty
lines 
in the paragraph

我目前使用的代码只返回随机数字..就好像它在做一个字数或其他东西。

例如

output = 567

output = 221

这就是所有它返回,没有单词,没有段落

我的代码看起来像这样

首先假设匹配然后打印匹配后的所有单词 然后我想删除所有空行以清理输出

 my ($shorten) = $origin =~ /word to match\s*(.*)$/s;

 my ($cleanlines) = $shorten =~ s/\n//g;

$ shorten部分完美运行,但$ cleanlines部分无效。

2 个答案:

答案 0 :(得分:3)

这一行

my ($cleanlines) = $shorten =~ s/\n//g;

删除$shorten中的所有换行符并存储$cleanlines

中所做的更改次数

如果您想从$shorten删除空行,则必须改为编写

(my $cleanlines = $shorten) =~ s/^\s*\n//gm;

答案 1 :(得分:0)

my ($shorten) = $origin =~ /word to match\s*(.*)$/s;之所以有效,是因为您在正则表达式中使用了捕获括号,(*.)匹配的任何内容最终都在$shorten中。

要从字符串中删除空行,可以使用这个简单的正则表达式:

$shorten =~ s/\n+\n/g;

替换将在$shorten变量上执行。如果你想保持$shorten不变并在新变量中清理行,那么只需将$shorten的内容复制到一个新变量并对其执行替换:

my $cleanlines = $shorten;
$cleanlines =~ s/\n+/\n/g;