2011-02-25 49 views
0

我試圖找到可以找到字符串「C:\\」的正則表達式。「C:\」的正則表達式

我的代碼是:

String test = "C:\\"; 
String regex = "[a-z]*[A-Z]*[:]*\\"; 
if(test.matches(regex)) 
    System.out.println("Success!"); 
else 
    System.out.println("Failure!"); 

我得到一個PatternSyntaxException。我嘗試了很多正則表達式,結果是一樣的。

我該如何解決?

回答

2

簡單的(但可能沒用)答案是`「。*」。

在這種情況下,您顯然希望更接近:"[a-zA-Z]:\\\\"。這需要一個字母,然後是一個冒號,然後是一個反斜槓。假設你的字符串應該代表Windows上某個磁盤的根目錄,它應該比你在任何情況下都要接近得多。

0

序列\\在大多數語言中都有特殊含義。這就是爲什麼它作爲路徑選擇器的不好的選擇。你在這裏遇到的問題是它在Java和正則表達式中具有特殊的含義。這意味着\\\\在Java中轉換爲\\,在正則表達式中轉換爲\\。

BTW,我認爲你只需要 「[A-ZA-Z]:\\\\」

OMG它有SO以及特殊的意義:P

0

你需要加倍逃避,曾經爲Java字符串逃生,另一次是正則表達式逃生:

String test = "C:\\"; 
String regex = "[a-zA-Z]:\\\\"; 
if ...
0

如果你正在努力尋找C:\明確,你可以只使用String regex ="C:\\";不是很靈活,但究竟適合。

你可能要找的東西就像String regex = "[A-Z]:\\\\"; 這就是說「匹配A和Z之間的單個字符」,然後「匹配字符」:「」然後「匹配字符\ 」。 如果您需要包含小寫字母起始字母,請使用String regex = "[a-zA-Z]:\\\\";,它與「a」和「z」之間或「A」和「Z」之間的單個字符匹配。

0

爲什麼不直接使用String.contains("C:\\")