我想做标题所说的内容,虽然我知道如何使用以下代码完成:
(其中local
是表示路径的变量):
String path = ( local.startsWith(File.separator) || local.startsWith("/") || local.startsWith("\\"))
? local.substring(File.separator.length(), local.length())
: local;
我需要将上面的内容转换为regex表达式,所以我正在使用:
path = local.replaceFirst("[" + File.separator + "/\\]", "");
来自xml schema
我正在使用正则表达式并查看教程here,在我看来它必须有效,但它根本没有,我得到这个错误 - > :
java.util.regex.PatternSyntaxException: Unclosed character class near index 4
[\/\]
^
如果我将代码更改为以下代码,则可以:
local.replaceFirst("[" + File.separator + "/\\Q \\ \\E]", "");
Here说\
是一个特殊字符,但是:
有两种方法可以强制将元字符视为普通字符:
还提到了这个问题:Forward slash in Java Regex
答案 0 :(得分:0)
错误是:
只需使用\\
,它就会被\
取代,所以我只有特殊字符。
解决方案是使用\\\\
,因此它被\\
替换,第一个\
将第二个\
视为字符,而不是特殊字符。
如果有人遇到同样的问题,请留下此解决方案。