Java正则表达式{1,}的含义

时间:2016-07-08 02:58:35

标签: java

请考虑以下代码:

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 个答案:

答案 0 :(得分:3)

此子句称为量词。

它表示特定数字,数字列表或范围(无穷大)。数字表示确切的出现次数。昏迷用于表示多个(在数字之间)或范围到无穷大(未跟随数字时。

后面是这种情况:该子句将检查前一组的一次或多次出现。

但是,您可以在同一位置将{1,}替换为+,以便用较少的字符执行相同的效果。

我使用regexr.com作为学习和探索正则表达式的资源,这很精彩。另外,这里有一个非常全面的Wikipedia page,涵盖了不同版本的正则表达式,这里有关于量词的Oracle page