#java #regex #integer #pattern-matching #extract
#java #регулярное выражение #целое число #сопоставление с образцом #извлечь
Вопрос:
Итак, я довольно новичок в регулярном выражении … до сих пор я использую регулярное выражение цикл :
boolean match = false; int number =0;
int number =0;
String Str1 = String.valueOf(451999277);
for (int i=0;match1 == false;i ) {
//check the pattern through loop
match1 = Pattern.matches(".*" i i i ".*", Str1);
number = i;// assigning the number (i) which is the triplet(occur 3 times in a row) in the givin int
}
Моя цель — найти число, которое является триплетом в заданном целом числе, например:
Я хочу извлечь: «9» из 451999277; поскольку «9» встречается 3 раза, т.е. «999»
но я уверен, что должно быть решение, использующее исключительно регулярное выражение….Было бы здорово, если бы кто-нибудь помог мне найти это решение …… заранее спасибо
Ответ №1:
Используйте группу захвата для сопоставления с цифрой, а затем обратитесь к ней позже:
(d)11
сопоставит цифру, запишите ее в группу (в данном случае номер 1, поскольку это первая группа регулярного выражения), а затем сопоставьте все, что находится в группе 1, дважды сразу после этого.
Pattern regex = Pattern.compile("(\d)\1\1");
Matcher regexMatcher = regex.matcher(subject);
if (regexMatcher.find()) {
ResultString = regexMatcher.group();
}
найдет первое совпадение в subject
(если оно есть).
Комментарии:
1. О, это сработало! большое вам спасибо, сэр ….. можете ли вы подсказать мне лучшие ресурсы для изучения регулярных выражений на Java?
2. Перейдите по ссылке в моем ответе на отличный общий сайт регулярных выражений. Он также содержит информацию о специфичных для Java проблемах с регулярными выражениями.