Regex 在perl中替换字符串值

Regex 在perl中替换字符串值,regex,string,perl,Regex,String,Perl,我有一个字符串,如下所示: my $testing = 'EmailId=learner.here@stackoverflow.com&passWord=mypassword123'; 在我的Perl代码中,我想做的就是将这个值作为输入,并用类似于**3的内容替换passWord的值(其中3是实际密码的最后一个字符); 即最终输出为: "EmailId=learner.here@stackoverflow.com&passWord=****3" 我能够使用以下方法在Perl中

我有一个字符串,如下所示:

my $testing = 'EmailId=learner.here@stackoverflow.com&passWord=mypassword123';
在我的Perl代码中,我想做的就是将这个值作为输入,并用类似于
**3
的内容替换passWord的值(其中
3
是实际密码的最后一个字符); 即最终输出为:

"EmailId=learner.here@stackoverflow.com&passWord=****3"
我能够使用以下方法在Perl中生成上述输出:

my $testing = 'EmailId=learner.here@stackoverflow.com&passWord=mypassword123';
my ( $val, $val1) = split( 'passWord=', $testing );
my $string =  $with_this . substr($val1,length($val1) - 1);
print "\n" . $val . 'passWord=' . $string . "\n";
有人能帮助我理解这是否是正确的方法,或者如何才能让它变得更好。 它工作得很好,但我仍然认为应该有一些简单的方法来使用正则表达式或其他方法来实现这一点

  • 使代码更好或以更简单的方式完成
  • 如果实际值甚至未退出,则处理条件
  • 或任何其他建议
  • 我是编程新手,所以我做了研究并提出了我上面提到的解决方案。 如果你有任何问题,请告诉我

    $testing =~ s/\bpassWord=\K.*(?=.)/****/s;
    
    如果密码不总是在字符串末尾找到,则需要进行一些调整。例如,下面处理密码可以通过
    结束的情况

    $testing =~ s/[&,]passWord=\K[^,]*(?=[^,])/****/s;
    
    如果密码不总是在字符串末尾找到,则需要进行一些调整。例如,下面处理密码可以通过
    结束的情况

    $testing =~ s/[&,]passWord=\K[^,]*(?=[^,])/****/s;
    

    这将用正确数量的星号替换原始值,但最后一个字符除外:

    $testing =~ s/passWord=([^&]+)/'passWord=' . ('*' x (length($1) - 1)) . substr($1, -1)/e;
    

    这将用正确数量的星号替换原始值,但最后一个字符除外:

    $testing =~ s/passWord=([^&]+)/'passWord=' . ('*' x (length($1) - 1)) . substr($1, -1)/e;
    

    这很好,但我可以从对我的问题的评论中看出,如果密码不是行的最后一个字符,那么在这种情况下会发生什么,等等。只是出于好奇,您如何处理这样的情况:my$testing='EmailId=learner。here@stackoverflow.com&passWord=mypassword123,someOtherId=它的值';在同一个字符串中使用不同的分隔符有点奇怪,但只需将
    [^&]
    更改为
    [^,]
    。这很好,但我可以从对我的问题的评论中看出,如果密码不是行的最后一个字符,那么在这种情况下会发生什么,等等。只是出于好奇,您如何处理这样的情况:my$testing='EmailId=learner。here@stackoverflow.com&passWord=mypassword123,someOtherId=它的值';在同一个字符串中使用不同的分隔符有点奇怪,但只需将
    [^&]
    更改为
    [^,]
    。只是出于好奇,您如何处理这样的情况:my$testing='EmailId=learner。here@stackoverflow.com&passWord=mypassword123,someOtherId=它的值';出于好奇,您如何处理这样的案例:my$testing='EmailId=learner。here@stackoverflow.com&passWord=mypassword123,someOtherId=它的值';