Найти список строк, которые отображаются в тексте, используя регулярное выражение

#java #regex

#java #регулярное выражение

Вопрос:

Я застрял в этой ситуации.

  public void findListOfPattern(){
      String text = "abce1213abcd231asdf";
      String find = "1213|231|1232"; 
      Pattern part = Pattern.compile(find);
      Matcher mat = part.matcher(text);
      System.out.println(mat.find()); //True
}
  

Возможность получить истинный результат, если какая-либо строка в find get совпадает.
Мне нужен список совпадений из текста.
Там текст может быть большим с большим количеством найденной строки, а также найти строку может больше.
В поиске: 1213,231,1232 разделены.

Результат должен быть таким:- 1213,231

Ответ №1:

Вам нужно вызвать mat.group() , чтобы вернуть желаемое совпадение.

Обычно вы выполняете цикл до mat.find() возврата true и печатаете все совпадения последовательно, вызывая mat.group() .

Затем вы можете создать ожидаемый результат String mat.group() , объединив результат по своему усмотрению, например, с помощью a StringBuilder .

Примечания

  • API здесь.
  • Вам нужно вызвать Matcher#find , Matcher#group чтобы получить какой-либо результат, а не выбрасывать IllegalStateException
  • У Pattern вас есть только группа по умолчанию. Если бы вы использовали круглые скобки или именованные группы (из Java 7), вы также могли бы вызвать overloads Matcher#group(int group) или Matcher#group(имя строки).

Комментарии:

1. Спасибо, позвольте мне попробовать.

2. Я не могу получить список строк, которые находятся в тексте.