Рассмотрим следующий код:

import java.util.regex.*;

class Test {
    public static void main(String[] args) {
        String str1 = "xxzz";
        String str2 = "xyz";
        String str3 = "yzz";
        Pattern pattern = Pattern.compile("(xx)*y?z{1,}");
        Matcher matcher = pattern.matcher(str1);
        System.out.println(matcher.matches());
        System.out.println(pattern.matcher(str2).matches());
        System.out.println(
        Pattern.compile("(xx)*y?z{1,}").
        matcher(str3).matches());
    }
}

Этот код производит следующий вывод:

true
false
true

Но если я удалю {1,}, он выдаст следующий результат:

false
false
false

Я не могу понять, как используется {1,} и как это работает, пожалуйста, поделитесь своими предложениями и помощью.

1
Sarang Shinde 8 Июл 2016 в 05:58

1 ответ

Лучший ответ

Это предложение известно как квантификатор.


Он указывает конкретное число, списки чисел или диапазон (до бесконечности). Число указывает точное количество вхождений. Запятая используется для обозначения нескольких (между числами) или диапазона до бесконечности (если за ними не следует число.

Это более поздний случай: в предложении будет проверяться одно или несколько вхождений предыдущей группы.

Однако вы можете заменить {1,} на + в том же месте, чтобы добиться того же эффекта с меньшим количеством символов.

Я использую regexr.com в качестве ресурса для изучения и изучения регулярных выражений, это замечательно. Кроме того, вот очень подробная страница Википедии, которая описывает регулярные выражения в разных версиях, и вот конкретно о квантификаторах на странице Oracle.

3
rtmh 10 Июл 2016 в 16:06
Я просто добавил еще несколько ссылок, которые только что нашел. Вы можете найти ссылку Oracle особенно полезной :)
 – 
rtmh
10 Июл 2016 в 16:08
Спасибо за предоставление таких ценных ссылок
 – 
Sarang Shinde
30 Июл 2016 в 13:27