2014-12-19 5 views
-1

Моя строка для разбора является ответом на http с разделением вертикальных баров '|' колоны ':' и запятые ''Нужна помощь в создании шаблона регулярных выражений

"1701|919422522891:224c1214-bb95-414d-ba76-77db95370545,1701|918275004333:5e93a439-2644-4455-9f01-f27e6cf0cde6" 

Я сделал попытку разобрать с помощью следующего кода

public void split2(){ 
    String input = "1701|919422522891:224c1214-bb95-414d-ba76-77db95370545," + 
        "1701|918275004333:5e93a439-2644-4455-9f01-f27e6cf0cde6"; 

    Matcher matcher = Pattern.compile("\\|.*?\\:\\,").matcher(input); 
    int nr = 0; 
    while (matcher.find()) { 
     System.out.println(matcher.group()); 
    } 
} 

ОБНОВЛЕНИЕ - РАБОЧИЙ КОД

Метод сплит хорошо работает

public String[] split(String regex,String input) 
    { 
     input = "1701|919422522891:224c1214-bb95-414d-ba76-77db95370545," + 
       "1701|918275004333:5e93a439-2644-4455-9f01-f27e6cf0cde6"; 
     regex = "\\||:|," ; 


     String[] soso = Pattern.compile(regex).split(input, input.length()); 

      for(String s :soso){ 
       Log.e("",s.toString()); 
     } 

     return null; 
    } 
+0

Что ваш ожидаемый результат? –

ответ

3

Вы можете использовать:

Matcher matcher = Pattern.compile("[^|]*\\|[^:]*:[^,]*,").matcher(input); 

Объяснение: Это регулярное выражение "[^|]*\\|[^:]*:[^,]*," означает:

  1. [^|]* - соответствует 0 или более символов перед трубой
  2. \\| - Матч трубы
  3. [^:]* - соответствует 0 или больше символов, прежде двоеточие
  4. : - Совместить двоеточие
  5. [^,]* - Match 0 или более символов до запятой
  6. , - Матч кома
Смежные вопросы