2010-04-02 209 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)+")) {