gpt4 book ai didi

regex - 无法通过子例程通过正则表达式替换字符串

转载 作者:行者123 更新时间:2023-12-02 04:42:08 26 4
gpt4 key购买 nike

我正在尝试用空字符串替换字符串中的方括号。这意味着如果字符串是 [SECTION],我想将其转换为 SECTION

我试过了,效果不错

my $sectionName =~ tr/[]//d;
print "$sectionName\n";

但是,当我尝试创建一个用于替换字符串的通用子例程时,它没有成功。这是我尝试过的,

sub strReplace
{
my $string = shift;
my $target = shift;
my $replacement = shift;

$target = quotemeta $target;
$replacement = quotemeta $replacement;

$string =~ tr/$target/$replacement/d;

return $string;
}

我是这样调用子的,

# the string "[SECTION]" below is intended to be replaced by a variable
my $sectionName = strReplace("[SECTION]", "[]", "");
print "$sectionName\n";

但是,我得到的不是替换字符串,而是旧字符串,即 [SECTION]。我究竟做错了什么? (PS:Perl版本5.14.2)

最佳答案

Perl 的 tr/// 运算符不支持变量。您可以在此处找到解决此问题的各种策略:Perl's tr/// is not doing what I want

总而言之,您有两个主要选择:

  • 将您的 tr/// 包装在一个 eval 中。
  • 使用 s/// 将您的 tr/// 转换为替换。

关于regex - 无法通过子例程通过正则表达式替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20597413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com