gpt4 book ai didi

regex - Perl 条件替换

转载 作者:行者123 更新时间:2023-12-02 07:05:06 24 4
gpt4 key购买 nike

我有一个带占位符的路径名,我想替换它:

# an example path with a placeholder
my $path = '%myproject%Web/ui/images/';

# mapping of all placeholders
my %placeholders = (
myproject => 'myproject/installation/all'
);

# substituting all placeholders in the path
$path =~ s!%(.*?)%!/$placeholders{$1}/!g;

# works fine -> 'myproject/installation/all/Web/ui/images/'
print $path;

这段代码工作正常,但有一个问题:我有一长串文件名和指定的不同占位符(因此是散列)。现在,为了更加稳健,如果路径中指定的占位符在 %placeholders 映射中不存在,我想抛出一个错误。

有什么办法可以实现吗?

最佳答案

Now for the sake of more robustness I'd like to throw an error if there is a placeholder specified in the path which does not exist in the %placeholders mapping

这可以使用 /e 很容易地完成:

$path =~ s{%([^%]+)%}{
exists($path{$1})
? '/'.$path{$1}.'/'
: die "Placeholder $1 does not exist"
}ge;

注意:我觉得把.*?换成[^%]+比较好,可以防止错误匹配。

关于regex - Perl 条件替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13742219/

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