System.out.println(Pattern.matches("[amn]?", "a"));
该语句返回true。
但
System.out.println(Pattern.matches("[amn]?", "amn"));
System.out.println(Pattern.matches("[amn]?", "adef"));
这些语句返回false。
为什么呢
我对正则表达式量词“?”的理解这是。
正则表达式:X?
描述:X发生一次或根本不发生
所以说“ [amn]”? “ amn”应该返回true,因为a,m,n发生一次。
类似地在“ [amn]”中? “ adef” a仅出现一次,而m和n根本不出现。
我要去哪里错了?
最佳答案
正则表达式[amn]?
匹配由a
,m
或n
组成的任何其他字符串。如"a"
,它满足此条件。
但是,amn
和adef
以这些字母之一开头,然后继续以使“一次或根本不执行”规则不得到满足。