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 ":".
Probieren Sie '(? I) hostName [^:] *' oder even (ein Zeichenfolgenliteral) '" (? I) \\ bhostName [^:] * "' –
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 –
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