2013-04-27 39 views

回答

3

你不需要在正則表達式中轉義' - '。它只是[...]字符類規範中的一個元字符。

如果這是Java String文字,然後第一'\'將難逃第二'\'這將在正則表達式...這完全是無稽之談給\-

如果這不是一個字符串文字,那麼第一個'\'正在逃避正則表達式中的第二個'\'。這不是無稽之談。這意味着匹配一個反斜槓字符。


1 - 它是,但是,法律廢話。 javadoc說:「反斜槓可能在非字母字符之前使用,無論該字符是否是未轉義結構的一部分。」冗餘反斜槓將被忽略。

+0

我不會說這是無意義的。這只是冗餘語法。 – nhahtdh 2013-04-27 04:11:13

+0

@nhahtdh - 你可以自由地寫你自己的答案,說:-) – 2013-04-27 11:43:16

+0

那麼,我認爲這是一個有點矯枉過正的答案。 – nhahtdh 2013-04-27 11:45:24

1

我打算假定您所指的字符串文字將在Java程序中寫爲"Print\\-Services"。在這種情況下,正則表達式將包含一個轉義的' - '字符,這並不合理,但顯然不會被java.util.regex.Pattern視爲錯誤。根據JavaDoc:

反斜線可先於一個非字母字符而不管該字符是否是未逸出構建體的一部分 使用。

舉個例子:

Pattern pattern1 = Pattern.compile("Print\\-Services");  
Pattern pattern2 = Pattern.compile("Print-Services"); // No PatternSyntaxException 
// Pattern pattern3 = Pattern.compile("Print\-Services"); // Not valid Java syntax 

我沒有測試真正徹底,但現在看來,模式被忽略轉義字符。

System.out.println(pattern1.matcher("Print-Services").matches()); // true 
System.out.println(pattern2.matcher("Print-Services").matches()); // true 

看起來似乎是誰提供的那個例子給出了一個令人困惑或困惑的例子。

相關問題