gpt4 book ai didi

regex - 使用 perl 替换 Single shot 中的字符串

转载 作者:行者123 更新时间:2023-12-01 07:24:34 25 4
gpt4 key购买 nike

我的输入:

my $tmp = "rrccllrrc";

预期输出:
$tmp = "right right center center left left right right center"; #End should not be spaced definitely.

我的代码:
$tmp=~s/c/center /g;
$tmp=~s/l/left /g;
$tmp=~s/r/right /g;

有人可以帮助尽可能缩短替换正则表达式的方法。

最佳答案

也可以不用正则表达式

my %repl = (c => 'center', l => 'left', r => 'right');

$tmp = join ' ', map { $repl{$_} } split '', $tmp;

split带图案 ''将一个字符串分解为其字符的列表,然后 map使用散列将每个单词替换为其完整单词。 map的输出列表由空间连接。

更新到评论

如果原始字符串还包含其他字符,可以先将它们过滤掉
$tmp = join ' ', map { $repl{$_} } grep { /c|l|r/ } split '', $tmp;

或者,使用 map 中的空列表对于哈希中未定义的任何内容
$tmp = join ' ', map { $repl{$_} // () } split '', $tmp;

这将完全删除除 c|l|r 之外的所有内容.将它们保留在结果中
$tmp = join ' ', map { $repl{$_} // $_ } split '', $tmp;

它们也用空格隔开。为了让他们在一起需要进一步调整。

关于regex - 使用 perl 替换 Single shot 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40626904/

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