2017-04-25 49 views
0

我使用Java正则表达式开始,我发现我写的模式是这样的(人为的例子):禁用字符串转义(反斜杠地狱)

C:\\\\windows\\\\system\\d+

匹配

C:\windows\system32

有没有办法使用java正则表达式没有疯狂的反斜杠?

+2

没有,没有 –

+2

你可以将它们保存在一个单独的文件,然后阅读,在(可能作为资源)。 – yshavit

回答

1

使用Pattern.quote(String s)(点击文档)

它把所有的元字符传递的字符串为文字字符(但仍必须逃避建设一个字符串的反斜杠)。这可让您键入\\而不是\\\\来表示正则表达式模式中的实际/文字\。但是这也意味着任何其他特殊字符也会被字面解释(例如在您的示例中为\d+)。

但在你的榜样,您可以使用: Pattern.quote("C:\\windows\\system") + "\\d+";

测试它这样:System.out.println("C:\\windows\\system32".matches(Pattern.quote("C:\\windows\\system") + "\\d+"));

+0

这仍然需要\\因为\仍然是字符串转义字符。 (另外,wtf是否使用反斜杠作为注释中的转义字符?) – Powerlord

+0

@Powerlord糟糕...你是对的! – sep1256