请考虑以下代码:
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,}
的使用及其运作方式,请提供建议和帮助。
答案 0 :(得分:3)
此子句称为量词。
它表示特定数字,数字列表或范围(无穷大)。数字表示确切的出现次数。昏迷用于表示多个(在数字之间)或范围到无穷大(未跟随数字时。
后面是这种情况:该子句将检查前一组的一次或多次出现。
但是,您可以在同一位置将{1,}
替换为+
,以便用较少的字符执行相同的效果。
我使用regexr.com作为学习和探索正则表达式的资源,这很精彩。另外,这里有一个非常全面的Wikipedia page,涵盖了不同版本的正则表达式,这里有关于量词的Oracle page。