2017-04-25 256 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