2015-03-13 65 views
-2

我想要分割的字符串的前面:“value.value2.key:somethink.two” ,我想在数组元素:分割字符串,它是在另一个字符

  1. “值“
  2. ”值2“
  3. ”键:somethink.two“

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

+0

那你试试?为什么失败?你尝试了哪些其他用例,哪些失败了?为什么你需要正则表达式?你的代码在哪里?当你调试你的代码时发生了什么? – Kon 2015-03-13 14:25:32

回答

4

使用积极的前瞻断言。

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

(?=...)被称为正向超前断言。 (?=.*?:)肯定前瞻断言匹配后必须跟着.*?,零个或多个字符和一个冒号符号。因此它匹配冒号前的所有点,但不匹配冒号后的点,因为最后一个点后面没有冒号。

输出:

[value, value2, key: somethink.two] 
+0

从我也是upvote。有用。也许这位下来的选民是这样做的,因为嫉妒。 :) – muasif80 2015-03-13 14:29:28

+0

非常感谢。你只知道该怎么写?我有问题“(?=。*?:)” – 2015-03-13 14:31:43

+0

什么问题? – 2015-03-13 14:33:59