2015-03-13 2 views
-2

я хочу, чтобы разбить строку: «value.value2.key: somethink.two» и я хочу, чтобы элементы массива:Разбивает строку по характеру, который находится перед другим символом

  1. «значение "
  2. "значение2"
  3. "ключ: somethink.two"

Поэтому мне нужно регулярное выражение для него. Разделить на "\\." перед символами и ":" Спасибо за помощь.

+0

Что вы пробовали? Почему это не получилось? Какие другие варианты использования вы пробовали и какие из них не работают? Зачем вам регулярное выражение? Где ваш код? Что произошло, когда вы отлаживали код? – Kon

ответ

4

Используйте положительное утверждение.

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

(?=...) под названием положительное утверждение взгляда. (?=.*?:) положительный lookahead утверждает, что за соответствием должно следовать .*?, ноль или более символов и символ двоеточия. Таким образом, он совпадает со всеми точками перед двоеточием, но не после двоеточия, так как последним точкам не соответствует двоеточие.

Выход:

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

От меня тоже вверх. Оно работает. Возможно, голосующий сделал это из ревности. :) – muasif80

+0

Большое спасибо. Вы просто знаете, как это написать? У меня была проблема с "(? =. *? :)" –

+0

какая проблема ???? –

Смежные вопросы