2016-10-09 2 views
-1

Так я довольно новыми для Regexp ... uptill теперь я использую Regexp + цикл:Regexp: соответствует триплет числа в Givin целое

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»

, но я уверен, что должно быть решение, использующее исключительно Regexp .... Было бы здорово, если кто-нибудь поможет мне найти это решение .... .. спасибо заранее

ответ

1

Используйте capturing group, чтобы соответствовать цифре, а затем обратиться к нему позже:

(\d)\1\1 

будет соответствовать цифре, зафиксировав ее в группе (номер 1 в этом случае, так как это первый группу регулярного выражения), а затем сразу же сопоставлять все, что находится в группе 1 дважды.

Pattern regex = Pattern.compile("(\\d)\\1\\1"); 
Matcher regexMatcher = regex.matcher(subject); 
if (regexMatcher.find()) { 
    ResultString = regexMatcher.group(); 
} 

найдет первый матч в subject (если таковой имеется).

+0

О, это сработало! спасибо, много, сэр ..... может у сказать, что лучшие ресурсы для изучения Regexp в java? –

+0

Следуйте по ссылке в моем ответе на большой общий сайт регулярных выражений. Он также содержит информацию о специфических для Java проблемах с регулярными выражениями. –

Смежные вопросы