如何用简洁Perl正则将多正斜杠合并为单斜杠并去除末尾斜杠
简洁处理路径中的多正斜杠
你需要合并路径中连续的正斜杠为单个,并移除末尾的斜杠,完全不用写循环,Perl的正则表达式可以轻松搞定:
实现代码
use strict; use warnings; my $workdir = '//dir1///dir2/////dir3///dir4///'; print "原路径: $workdir\n"; # 1. 全局替换所有连续正斜杠为单个斜杠 $workdir =~ s/\/+/\//g; # 2. 移除字符串末尾的斜杠 $workdir =~ s/\/$//; print "处理后路径: $workdir\n";
代码说明
s/\/+/\//g:\/+匹配一个或多个连续的正斜杠,g修饰符确保全局替换所有符合条件的位置,一次就能完成所有连续斜杠的合并,替代了原来的循环逻辑。s/\/$//:经过第一步处理后,末尾最多只剩一个斜杠,这个正则直接匹配字符串结尾的斜杠并移除,一次替换即可完成收尾。
更紧凑的写法
如果追求代码简洁,也可以把两步合并成一行:
$workdir =~ s/\/+/\//g =~ s/\/$//;
内容的提问来源于stack exchange,提问作者Chazg76
相关产品推荐
相关产品推荐

