/ / Wie man eine Zeichenkette auf einen "Punkt" aufteilt, wenn und nur wenn das vorangehende und folgende Zeichen kein "Punkt" ist - Java, Regex

Wie man eine Zeichenkette auf einen "Punkt" aufteilt, wenn und nur wenn das vorhergehende und folgende Zeichen kein 'Punkt' ist - Java, Regex

Gegeben die folgende Zeichenfolge:

"foo.bar.baz"

es kann leicht auf den "Punkt" aufgeteilt werden, indem man Java String split verwendet:

split("foo.bar.baz", ".")

Wenn ich jedoch den Punkt erhalten möchte, wenn unmittelbar ein weiterer Punkt folgt, was ist der Regex-Ausdruck:

"foo.bar.baz..raz..daz.faz" → "foo" "bar" "baz..raz..daz" "faz"

Antworten:

7 für die Antwort № 1

Dieser Regex würde funktionieren:

s.split("(?<!\.)\.(?!\.)");

Die Idee ist, negative Lookahead nur zu splitten "." dem kein weiterer Punkt folgt oder vorangeht.