正则表达式 – 使用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; 它们也被空间隔开.要将它们保持在一起,需要进一步调整它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |