2016-07-29 8 views
-4

Es gibt eine gegebene Zeichenfolge, die Host: Port-Sequenzen enthält, und das Problem besteht darin, einen voll qualifizierten Host-Namen und einen kurzen zu vergleichen. Das sollten sie sein.Finden von Zeichen zwischen Symbolen in String

Beispiel: "hostName:1234,hostname.sg.com:3214,otherHost:1458".
Hier sollten hostName und hostname.sg.com gleich sein. Die Frage ist, wie man Zeichen zwischen "hostName" und ":" Zeichen findet? Ich habe versucht .+(:) aber natürlich wählt es alles bis zuletzt ":".

+0

Probieren Sie '(? I) hostName [^:] *' oder even (ein Zeichenfolgenliteral) '" (? I) \\ bhostName [^:] * "' –

+0

Guava hat einen netten MapSplitter ('Splitter .on (','). withKeyValueSeparator (':'). split ("Hostname: 1234, Hostname.sg.com: 3214, OtherHost: 1458.") '), siehe https://google.github.io/ guava/releases/19.0/api/docs/com/google/common/base/Splitter.MapSplitter.html –

+0

Das hängt davon ab, was du mit den gefundenen Charakteren machen willst, dh willst du sie teilen oder extrahieren usw.? Eine Möglichkeit, _your_ expression zu beheben (obwohl ich nicht sicher bin, ob es Ihren Anforderungen entspricht, weil Informationen fehlen, wie Sie es verwenden), könnte sein, es widerwillig zu machen: '. +? (:)'. – Thomas

Antwort

0

Was

(?<=hostName).*?: 

überprüfen Dies wird nur, wenn es Zeichen nach dem hostName zum am nächsten:, ohne hostName im Spiel einschließlich.

Verwandte Themen