java - 如何用一个替换字符串中的多个斜杠和反斜杠?

标签 java regex string replace replaceall

我的目标是用一个“\”替换所有的“/”和“\”。

输入:

String path = "H\\\\\\\\\\ello///Wo\\rld\\!////";

输出:

String path = "H\ello\Wo\rld\!\";

问题:

有没有办法在一行中完成所有这些?

我的解决方案(有效!):

  1. 全部改成同一个字符
  2. 用一个斜杠替换所有的“/”
  3. 让它恢复正常

我了解到我需要正则表达式并且“[X]+”将放置所有可能的组合,例如。 “XXfXfXXXX”到“XfXfX”。

我正在搜索类似的东西:(伪代码)

path = path.replaceAll("[\\/]+", "\\");

我尝试了一些组合,但每次都会抛出错误。

我的解决方案:

path = path.replace("\\", "/");
path = path.replaceAll("[/]+", "/");

pfad = pfad.replace("/", "\\");

最佳答案

尝试使用此模式来匹配斜杠和反斜杠组:(?:\\+|\/+) 并将其替换为 \\

解释:

(?:...) - 非捕获组

\\+ - 匹配一个或多个 \

\/+ - 匹配一个或多个/

| - 交替:在右边或左边匹配模式

Demo

或者,您可以使用模式 [\/\\]+,它匹配一个或多个 \/

Another demo

关于java - 如何用一个替换字符串中的多个斜杠和反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55904397/

相关文章:

java - 如何使用执行器服务从多个文件执行添加并给出最终输出

java - 什么是 java.lang.ArrayIndexOutOfBoundsException : 0?

java - Autowiring 构造函数是否会导致 Spring 创建该对象的至少一个实例?

javascript - 将变量插入正则表达式

python - 如何在 Python 中将十六进制字符串转换为整数?

c# - 使用字符串插值将字符串格式化为列

objective-c - 将包含 UTF-8 和空字节的 NSData 转换为字符串

java - 使用 MiniMax 返回移动

regex - 删除 `;` 和 `CRLF` 之间的所有空格

Python 正则表达式困惑