Regex 在perl正则表达式替换中,如何删除列表元素的前导空格?
我使用Perl正则表达式搜索某个模式,并在它之后立即添加一些新内容。添加的内容是一个列表,正如通常所期望的那样,我希望列表中的每个元素在输出中占据一行。我的代码如下:Regex 在perl正则表达式替换中,如何删除列表元素的前导空格?,regex,perl,replace,whitespace,element,Regex,Perl,Replace,Whitespace,Element,我使用Perl正则表达式搜索某个模式,并在它之后立即添加一些新内容。添加的内容是一个列表,正如通常所期望的那样,我希望列表中的每个元素在输出中占据一行。我的代码如下: push(@happy_list, "e\n"); push(@happy_list, "f\n"); push(@happy_list, "g\n"); push(@happy_list, "h\n"); $_ = "aaa\nfoo\nbbb"; $_ =~ s/(aaa.*?bbb)/$1\n@happy_list/sg;
push(@happy_list, "e\n");
push(@happy_list, "f\n");
push(@happy_list, "g\n");
push(@happy_list, "h\n");
$_ = "aaa\nfoo\nbbb";
$_ =~ s/(aaa.*?bbb)/$1\n@happy_list/sg;
print;
输出结果为:
aaa
foo
bbb
e
f
g
h
在输出中,列表的每个元素的开头都有一个空格,就在列表元素的前面。没关系,只是有点难看。有没有删除多余空格的简便方法?出现这种情况是因为数组用于字符串上下文,所以默认分隔符是空格 您可以通过在替换之前执行
$”='';
来更改此设置
$_ = "aaa\nfoo\nbbb";
$" = ''; #"for syntax highlighting
$_ =~ s/(aaa.*?bbb)/$1\n@happy_list/sg;
print;
您还可以执行以下操作:
$_ = "aaa\nfoo\nbbb";
my $str = join('', @happy_list);
$_ =~ s/(aaa.*?bbb)/$1\n$str/sg;
print;
出现这种情况是因为数组在字符串上下文中使用,所以默认分隔符是空格 您可以通过执行
$”=''来更改此设置代码>在替换之前
$_ = "aaa\nfoo\nbbb";
$" = ''; #"for syntax highlighting
$_ =~ s/(aaa.*?bbb)/$1\n@happy_list/sg;
print;
您还可以执行以下操作:
$_ = "aaa\nfoo\nbbb";
my $str = join('', @happy_list);
$_ =~ s/(aaa.*?bbb)/$1\n$str/sg;
print;
你试过修剪它吗
$_ =~ s/^\s+//;
你试过修剪它吗
$_ =~ s/^\s+//;
首先,我建议不要像那样使用$\uu
。它是perl
中的保留变量,用作循环迭代器。作为循环操作的一部分,有时需要对其进行修改,但将其设置为打印的缩写代码>语句的样式不好
这个问题的根源在于对数组进行字符串化,而这实际上并不需要在这里进行
#!/usr/bin/env perl
use strict;
use warnings;
my @happy_list;
push(@happy_list, "e\n");
push(@happy_list, "f\n");
push(@happy_list, "g\n");
push(@happy_list, "h\n");
my @new_list;
push ( @new_list, "aaa\n", "foo\n", "bbb\n" );
print @new_list, @happy_list;
尽管如此,我还是建议不要添加换行符,而是:
#!/usr/bin/env perl
use strict;
use warnings;
my @happy_list;
push(@happy_list, "e");
push(@happy_list, "f");
push(@happy_list, "g");
push(@happy_list, "h");
my @new_list;
push ( @new_list, "aaa", "foo", "bbb" );
print join "\n", @new_list, @happy_list;
首先,我建议不要像那样使用$\uu
。它是perl
中的保留变量,用作循环迭代器。作为循环操作的一部分,有时需要对其进行修改,但将其设置为打印的缩写代码>语句的样式不好
这个问题的根源在于对数组进行字符串化,而这实际上并不需要在这里进行
#!/usr/bin/env perl
use strict;
use warnings;
my @happy_list;
push(@happy_list, "e\n");
push(@happy_list, "f\n");
push(@happy_list, "g\n");
push(@happy_list, "h\n");
my @new_list;
push ( @new_list, "aaa\n", "foo\n", "bbb\n" );
print @new_list, @happy_list;
尽管如此,我还是建议不要添加换行符,而是:
#!/usr/bin/env perl
use strict;
use warnings;
my @happy_list;
push(@happy_list, "e");
push(@happy_list, "f");
push(@happy_list, "g");
push(@happy_list, "h");
my @new_list;
push ( @new_list, "aaa", "foo", "bbb" );
print join "\n", @new_list, @happy_list;
您可以添加一些示例输入和输出,以及您希望输出的具体外观吗?只是更新了帖子,添加了代码段和示例输出。您可以添加一些示例输入和输出,以及您希望输出的具体外观吗?只是更新了帖子,添加了代码段和示例输出。是的,$"='';代码>解决方案与我的代码完美配合。谢谢~!:-)是的,$"='';代码>解决方案与我的代码完美配合。谢谢~!:-)谢谢发布的Perl代码不是我正在使用的真正代码;它改编自一段较长的代码,并经过简化以演示我的问题。但是你的帖子总是很有启发性和洞察力,谢谢你~!谢谢发布的Perl代码不是我正在使用的真正代码;它改编自一段较长的代码,并经过简化以演示我的问题。但是你的帖子总是很有启发性和洞察力,谢谢你~!