区分一行中的多个正则表达式命中?

前端之家收集整理的这篇文章主要介绍了区分一行中的多个正则表达式命中?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试用Perl中的随机数替换IP地址:

while (my $line = <file>){
    $line =~ $regex{'ipadress'};

    my $rand0 = int(rand(256));
    my $rand1 = int(rand(256));
    my $rand2 = int(rand(256));
    my $rand3 = int(rand(256));

    $& = "$rand0.$rand1.$rand2.$rand3\n";`
}

问题是在某些情况下,一行中有多个IP地址.
如何避免它们都得到相同的随机数?

解决方法

好的开始$&是只读的,你不能像那样分配它来修改目标字符串.

我也不确定你的哈希的关键是否真的是ipadress(有一个),但我相信如果没有,你可以修复它.

我会写这样的东西.替换运算符上的/ e修饰符会导致执行替换字符串以确定要替换匹配的内容. join语句生成从0到255的四个字节值,并用点连接它们以形成随机地址.

while (my $line = <$fh>) {
  $line =~ s{$regex{ipadress}}{
    join '.',map int(rand(256)),0..3
  }eg;
  print $line;
}

猜你在找的正则表达式相关文章