Найдите текст Между двумя словами в Java

Я хочу получить весь текст промежуточные 2 слова wherver, это. Например:

String Testing="one i am here fine two one hope your are also fine two one ok see you two";

От вышеупомянутой строки я хочу выбрать слова между "один" и "два" в массиве:

Мой результат должен быть сохранен в массиве как это:

String result[1] = i am here fine
String result[2] = hope your are also fine  
String result[3] = ok see you

Как сделать в Java?

Заранее спасибо

  • Gnaniyar Zubair
5
задан Dave Webb 1 January 2010 в 12:36
поделиться

3 ответа

String input = "one i am here fine two one hope your are also fine two one ok see you two;";
Pattern p = Pattern.compile("(?<=\\bone\\b).*?(?=\\btwo\\b)");
Matcher m = p.matcher(input);
List<String> matches = new ArrayList<String>();
while (m.find()) {
  matches.add(m.group());
}

Это создаст список всего текста между "одним" и "двумя".

Если вам нужна более простая версия, которая не использует lookaheads/lookbehinds, попробуйте:

String input = "one i am here fine two one hope your are also fine two one ok see you two;";
Pattern p = Pattern.compile("(\\bone\\b)(.*?)(\\btwo\\b)");
Matcher m = p.matcher(input);
List<String> matches = new ArrayList<String>();
while (m.find()) {
  matches.add(m.group(2));
}

Примечание: Java-массивы основаны не на одном, а на нулях, поэтому в вашем примере первый результат был бы в result[0], а не в result[1]. В моем решении первое совпадение будет в matches.get(0).

.
7
ответ дан 13 December 2019 в 19:28
поделиться

Проверьте класс Java Pattern, который позволяет использовать регулярные выражения для идентификации подстрок и, следовательно, разбивать строку большего размера. Для идентификации 'единицы' нужно что-то вроде

Pattern.compile("\bone\B");

. Класс \b и \B соответствуют границам слов. Они нужны вам для того, чтобы случайно не совпадать со словом "кто-то", а не со словом "один" (в отступление я бы порекомендовал другой разделитель, а не слова "один", "два" и т.д.)

.
1
ответ дан 13 December 2019 в 19:28
поделиться

Просто используйте методы indexOf и subString

.
0
ответ дан 13 December 2019 в 19:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: