正则表达式 – 使用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;

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

相关文章

一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^d{n}$ 3 至少n位的数字:^d{n,}$ 4 m-n位的数字...
正则表达式非常有用,查找、匹配、处理字符串、替换和转换字符串,输入输出等。下面整理一些常用的正则...
0. 注: 不同语言中的正则表达式实现都会有一些不同。下文中的代码示例除特别说明的外,都是使用JS中的...
 正则表达式是从信息中搜索特定的模式的一把瑞士军刀。它们是一个巨大的工具库,其中的一些功能经常...
一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数...
\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n”匹配字符“n”。“\n...