I am using this pattern and matching a string.
String s = "//name:value /name:value";
if (s.matches("(//?\\s*\\w+:\\w+\\s*)+")) {
// it fits
}
This works properly.
But if开发者_如何学运维 I want to have a string like"/name-or-address:value/name-or-address:value"
which has this '-' in second part, it doesn't work.
I am using \w
to match A-Za-z_
, but how can I include -
in that?Use [\w-]
to combine both \w
and -
.
Note that -
should always be at the beginning or end of a character class, otherwise it will be interpreted as defining a range of characters (for instance, [a-z]
is the range of characters from a
to z
, whereas [az-]
is the three characters a
,z
,and-
).
I don't know if it answers your question but why not replacing \w+ with (\w|-)+ or [\w-]+ ?
[-\w]
(Or in a string, [-\\w]
.)
How about
if (s.matches("/(/|\\w|-|:\\w)+")) {
精彩评论