加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 用空字符串替换:意外结果

发布时间:2020-12-15 21:31:08 所属栏目:大数据 来源:网络整理
导读:为什么两个打印的数字不同? #!/usr/bin/env perluse warnings;use 5.10.1;my $sep = '';my $number = 110110110110111;$number =~ s/(d)(?=(?:d{3})+b)/$1$sep/g;say "A: $number";$number =~ s/Q$sepE//g;say "B: $number"; 输出: A: 11011011011011
为什么两个打印的数字不同?
#!/usr/bin/env perl
use warnings;
use 5.10.1;

my $sep = '';
my $number = 110110110110111;

$number =~ s/(d)(?=(?:d{3})+b)/$1$sep/g;
say "A: <$number>";

$number =~ s/Q$sepE//g;
say "B: <$number>";

输出:

A: <110110110110111>
B: <22222222221>

解决方法

报价 man perlop:

If the pattern evaluates to the empty string,the last successfully
executed regular expression is used instead.

尝试在第二次替换之前插入一个成功的正则表达式匹配,看看发生了什么:

(my $foo = '1') =~ s/1/x/; # successfully match “1”
$number =~ s///g;          # now you’re deleting all 1s
say "B: <$number>";        # <0000>

我会说这应该被弃用,并且通过使用警告来警告,很难看到好处.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读