Java正则表达式替换斜杠:单斜杠删去,多斜杠仅删首个
Java正则实现斜杠替换方案
我来帮你搞定这个斜杠替换的需求!根据你描述的规则——单个斜杠删除,连续斜杠只保留从第二个开始的部分,我们可以用反向否定预查的正则表达式来实现,一次替换就能搞定两种情况。
实现思路
核心思路是:匹配所有前面没有紧跟斜杠的单个斜杠,然后将其替换为空字符串。这样:
- 孤立的单个斜杠:前面没有斜杠,会被匹配并删除
- 连续斜杠的第一个斜杠:前面没有斜杠,会被匹配并删除,剩下的斜杠因为前面都是斜杠,不会被匹配,自然保留下来
Java代码示例
public class SlashReplacer { public static void main(String[] args) { // 测试Case 1:单个斜杠替换为空 String input1 = "This is /text/"; String output1 = input1.replaceAll("(?<!/)\\/", ""); System.out.println("Case 1 输出: " + output1); // 结果:This is text // 测试Case 2:连续斜杠只保留一个 String input2 = "This// is //text"; String output2 = input2.replaceAll("(?<!/)\\/", ""); System.out.println("Case 2 输出: " + output2); // 结果:This/ is /text } }
正则表达式解释
(?<!/):这是反向否定预查,用来检查当前位置的前面是否没有斜杠。如果前面没有斜杠,才会继续匹配后面的字符。\\/:在Java字符串中表示正则里的斜杠/(其实斜杠不是正则元字符,直接写/也是有效的,这里用转义写法是为了避免代码阅读歧义)。
额外场景验证
比如输入"/a//b/c/",替换后会得到"a/bc",完全符合规则:
- 开头的单个斜杠被删除
- 连续的
//变成/ - 中间的单个
/被删除 - 结尾的单个斜杠被删除
内容的提问来源于stack exchange,提问作者ashok
相关产品推荐
相关产品推荐

