禁用字符串转义(反斜杠地狱)

时间:2017-04-25 04:45:23

标签: java regex escaping

我开始使用Java正则表达式,我发现我必须编写这样的模式(人为的例子):

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

匹配

C:\windows\system32

有没有办法使用java正则表达而没有大量的反斜杠?

1 个答案:

答案 0 :(得分:1)

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

它将传递的String中的所有元字符视为文字字符(但您仍然必须在构造字符串文字时转义反斜杠)。这使您可以键入\\而不是\\\\来表示正则表达式模式中的实际/文字\。但这也意味着任何其他特殊字符也将按字面解释(例如示例中的\d+)。

但在您的示例中,您可以使用: Pattern.quote("C:\\windows\\system") + "\\d+";

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