2014-01-06 1 views
2

Просто быстрый вопрос о шаблонах Java regex! Так сказать, если бы я был способ, как ..Запрос шаблона регулярного выражения Java

public void example() 
    { 
     Pattern p = Pattern.compile("\\d*"); 
     Matcher m = p.matcher("ab34ef"); 
     boolean b = false; 
     while (b = m.find()) 
     { 
     System.out.println(m.start() + " " + m.group()); 
     } 
    } 

Если бы я побежал это, я бы в конечном итоге с следующим выводом ..

 0 
    1 
    2 34 
    4 
    5 
    6 

Я понимаю, как это работает, кроме как она заканчивается на 6, я думал, что это закончится на 5, может кто-нибудь, пожалуйста, объясните мне это? Благодаря!

+0

6 для пустого символа в конце. –

+2

Кстати, ваш 'b' полностью избыточен. Вы никогда его не читали. –

ответ

3

В вашей строке "ab34ef" имеется 7 «пустых символов» со значением "". Они расположены между каждым из обычных символов. Он пытается найти совпадение, начинающееся с каждого пустым символом, не каждый нормальный символ; то есть местоположение каждого | в следующем: "|a|b|3|4|e|f|".

+0

Ahh! Понял! Brilliant! Благодаря! :) – bdavies6086

+0

@ user3087397 Нет проблем. Рад, что смог помочь! –

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

  • Нет связанных вопросов^_^