java - Prevent regex from matching slash characters -
i have following regex \/\/.*\/.*?
, applying strings in format: mongodb://localhost:27017/admin?replicaset=rs
based on above returned match is: //localhost:27017/
however, not want //../
characters want result be: localhost:27017
what needs modified in order achieve this, new regex building.
edit: using java 1.7 execute regex statement.
you can use replaceall
approach in java if not want use matcher
:
system.out.println("mongodb://localhost:27017/admin?replicaset=rs".replaceall("mongodb://([^/]*).*", "$1"));
here, assume have 1 occurrence of mongodb url. mongodb://
matches sequence of characters literally, ([^/]*)
matches sequence of 0 or more characters other /
, stores them in capturing group 1 (we'll use backreference $1
group retrieve text in replacement pattern). .*
matches symbols end of one-line string.
see ideone demo
or, matcher
,
pattern ptrn = pattern.compile("(?<=//)[^/]*"); matcher matcher = ptrn.matcher(str); while (matcher.find()) { system.out.println(matcher.group()); }
the regex here - (?<=//)[^/]*
- matches again sequence of 0 or more characters other /
(with [^/]*
), makes sure there //
right before sequence. (?<=//)
positive lookbehind not consume characters, , not return them in match.
Comments
Post a Comment