#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. Я не могу получить список строк, которые находятся в тексте.