2016-03-26 2 views
-2

У меня есть строка, какпарсинг строки, используя шаблон и Искатель

str = "-------------Date 26032016 
Hi Team, I am alone. 
-------------Time 206066"; 

Мне нужна

Привет команда, я один.

Я использую следующий код, но

Pattern p = Pattern.compile("(-*?) H"); 
     Matcher m = p.matcher(str); 
     while (m.find()) { 
      part = m.group(1); 
     } 
Pattern p1 = Pattern.compile("(.*?) -"); 
     Matcher m1 = p1.matcher(part); 
     while (m1.find()) { 
      part1 = m1.group(1); 
     } 

Но не работает.

Я пытаюсь найти любую строку между датой (например, ------------- Date 26032016) и временем (например, ----------- - Время 206066).

+0

Каков ваш ожидаемый выход? –

+0

Привет! Как вы думаете, можете ли вы немного расширить то, что вы пытаетесь сделать? Если вы просто пытаетесь найти эту строку, можете ли вы не просто соответствовать самой строке? Или вы пытаетесь найти любую строку между тире и датами? – Kezz101

+0

Мне нужен Привет, команда, я одна. – user2806992

ответ

1

Почему вы используете несколько матчи? Вы могли бы просто использовать:

-*Date \\d{8}\n(.*)\n-*Time \\d{6} 

Это предполагает, что строки whown с строковым значением действительно разные линии и не только accidential линии обертывание.

В противном случае вам нужно будет заменить (или удалить) в \n символы из шаблона

+0

Я получаю вывод как Hi Team, я один. Как убрать это «-----------» – user2806992

+0

Предположим, что '*' отсутствует в второй '-'. Или у вас нет разрывов строк. Тогда '(. *)' Принимает любой символ. Вы должны использовать '- +' для второй тире последовательности. (хотя бы один тире) – rpy

+0

Ой, может быть, плохо. Вам нужно исключить тире из результата: '(. * [^ -])'. – rpy

0

вы можете использовать сайты, как это, чтобы создать регулярное выражение: https://regex101.com/

это должно работать:

Pattern p = Pattern.compile("-*Date \\d*\\r?\\n?(.*)\\r?\\n?-*Time \\d*"); 
Matcher m = p.matcher(str); 
while (m.find()) { 
      part = m.group(1); //part is now 'Hi Team, I am alone.' 

}

+0

Я получаю вывод как Привет, Team, я один. ----- Как удалить эту «-----------» – user2806992

+0

любую идею по этому вопросу. – user2806992

+0

проверьте, что вы снова вводите строку ввода, вы можете изменить (. *) На ([^ -] *) – LiozM