正则表达式 – 使用perl替换单击中的字符串

前端之家收集整理的这篇文章主要介绍了正则表达式 – 使用perl替换单击中的字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的意见:

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使用散列将其全部替换为全字.地图的输出列表由空格连接.

更新为评论

如果原始字符串包含其他字符,则可以先将其过滤掉

$tmp = join ' ',map { $repl{$_} } grep { /c|l|r/ } split '',$tmp;

或者,在地图中使用空列表中的任何未在散列中定义的内容

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

这除了c | l | r之外完全删除了所有内容.让他们保持在结果中

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

它们也被空间隔开.要将它们保持在一起,需要进一步调整它.

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