Добрый вечер! У меня есть параметр входящей строки, что-то вроде этого "522 | 625 | 925 | ... 6234 |" Создаю такой вид штатной нитью. "([0-9] \ |) *" ввести шаблон в приложение и ...

 public static String decrypt( String message, int incr ) {
    String result = "";
    Pattern pattern = Pattern.compile("([0-9]\\|)*");
    Matcher matcher = pattern.matcher(message);
    boolean look = matcher.lookingAt();    
    if (look) {
        Log.d("MyActivity","exist: " + message);

Я вижу строку "exist: niiice" в журнале cat. Что я сделал не так?

0
MrNobody 17 Сен 2013 в 17:36

1 ответ

Лучший ответ

Попробуй это

Pattern pattern = Pattern.compile("(\\d+\\|{1})+");

Квантификатор «*» в вашем шаблоне означает ноль или более раз, поэтому matcher.lookingAt () возвращает true для любой входной строки.

http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

0
kvagus 17 Сен 2013 в 19:40
Изменение * на + правильно, но почему вы добавили {1}? Вы знаете, что это ничего не делает, не так ли?
 – 
Alan Moore
3 Окт 2013 в 09:16