2010-04-02 208 views
2

我正在使用此模式並匹配字符串。Java正則表達式:如何包含' - '

String s = "//name:value /name:value"; 
if (s.matches("(//?\\s*\\w+:\\w+\\s*)+")) { 
    // it fits 
} 

此功能正常。
但是,如果我想要一個像"/name-or-address:value/name-or-address:value"這樣的字符串,在第二部分中有' - ',它不起作用。
我正在使用\w來匹配A-Za-z_,但我怎麼能包括-在那?

回答

5

使用[\w-]來組合\w-

注意-應該總是在開始或在字符類的結束,否則它會被解釋爲限定的範圍內的字符(例如,[a-z]是從az字符的範圍內,而[az-]是三個字符a,z-)。

0

我不知道它是否回答你的問題,但爲什麼不用(\ w | - )+或[\ w - ] +替換\ w +?

+0

沒有理由使用一組或操作員在這裏 - 字符類應使用'[]',而不是OR的定義。 – Amber 2010-04-02 20:36:25

0

[-\w](或者一個字符串,[-\\w]。)

0

如何

if (s.matches("/(/|\\w|-|:\\w)+")) {