加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 05:39:02 所属栏目:百科 来源:网络整理
导读:我的意见: 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 $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;

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读