按另一个字符前面的字符拆分字符串

Split string by character that is in front of another character

我想拆分一个字符串:"value.value2.key: somethink.two" 我想获取数组中的元素:

  1. "value"
  2. "value2"
  3. "key: somethink.two"

所以我需要正则表达式。在字符前按 "\."":" 拆分 感谢您的帮助。

使用积极的先行断言。

String s = "value.value2.key: somethink.two";
String parts[] = s.split("\.(?=.*?:)");
System.out.println(Arrays.toString(parts));

(?=...) 称为正先行断言。 (?=.*?:) 正向先行断言匹配必须后跟 .*?、零个或多个字符和一个冒号。所以它匹配冒号之前的所有点,但不匹配冒号之后的点,因为最后一个点后面没有跟冒号。

输出:

[value, value2, key: somethink.two]