正则表达式新手求助:如何去除斜杠(/)前后的空白字符?
解决斜杠前后空白的正则替换方案
嘿,我来帮你搞定这个正则问题!看你的需求是要把斜杠/前后的空白都去掉,但保留斜杠中间内容里的空格(比如Some folder里的空格不能动),对吧?
先说说你之前尝试的@"\s?()\s?"为啥不行——这个表达式里的空捕获组()完全没关联到斜杠,相当于只是在匹配零散的空白,根本没定位到斜杠前后的目标空白,所以肯定达不到效果。
给你两个靠谱的方案,都能实现你要的结果:
方案一:简洁匹配替换
用正则@"\s*/\s*"匹配“任意空白+斜杠+任意空白”的组合,然后替换成单个/。这样不管斜杠前后有多少个空白(包括0个),都会被替换成干净的/。
举个C#的代码例子(看你用了@前缀,应该是C#环境):
string input = "Path01 /Some folder/ folder (2)"; string result = Regex.Replace(input, @"\s*/\s*", "/"); // 输出结果:"Path01/Some folder/folder (2)"
正则解释:
\s*:匹配0个或多个空白字符(空格、制表符都算)/:匹配实际的斜杠字符- 整个表达式把斜杠前后的所有空白和斜杠本身匹配,替换成单个
/,就完美去掉了前后的空白。
方案二:精准匹配要删除的空白
如果你想更精准地只删除斜杠前后的空白(不碰斜杠本身),可以用这个正则@"\s+(?=/)|(?<=/)\s+",然后替换成空字符串:
代码示例:
string input = "Path01 /Some folder/ folder (2)"; string result = Regex.Replace(input, @"\s+(?=/)|(?<=/)\s+", ""); // 输出结果同样是:"Path01/Some folder/folder (2)"
正则解释:
\s+(?=/):匹配一个或多个空白,后面紧跟着斜杠(正向预查,不捕获斜杠本身)(?<=/)\s+:匹配一个或多个空白,前面是斜杠(反向预查,不捕获斜杠本身)- 把这两类空白替换成空,就直接去掉了斜杠前后的冗余空白,斜杠保留原样。
这两个方案都能满足你的需求,选哪个看你的习惯就行~
内容的提问来源于stack exchange,提问作者romanK
相关产品推荐
相关产品推荐

