Java RegExp';的行为';和'+';

Java RegExp';的行为';和'+';,java,regex,Java,Regex,为什么此正则表达式求值返回“false”? Pattern.matches(“[abc]?”,“abc”)//false 根据定义“?”计算字符串是否与a、b或c的“零”或“一”匹配。 据我所知,a,b,c中的每一个都有“一个”出现,所以它应该是真的,但它是假的。为什么? 对于下一行代码-Pattern.matches(“[abc]+”,“abc”)/返回true(计算一个或多个出现的a、b或c) 这是正确的,因为a、b、c各出现一次 只要只有一个事件,“?”或“+”的计算结果应该相同。我无法理

为什么此正则表达式求值返回“false”? Pattern.matches(“[abc]?”,“abc”)//false

根据定义“?”计算字符串是否与a、b或c的“零”或“一”匹配。 据我所知,a,b,c中的每一个都有“一个”出现,所以它应该是真的,但它是假的。为什么?

对于下一行代码-Pattern.matches(“[abc]+”,“abc”)/返回true(计算一个或多个出现的a、b或c) 这是正确的,因为a、b、c各出现一次

只要只有一个事件,“?”或“+”的计算结果应该相同。我无法理解在“?”的情况下如何评估“false” 谁能解释一下吗

import java.util.regex.*;
public class Main
    {
        public static void main(String[] args) {
            System.out.println(Pattern.matches("[abc]?", "abc")); //false (a or b or c comes zero or one time);
            System.out.println(Pattern.matches("[abc]+", "abc")); //true  (a or b or c comes one or more time)
    }
}

正则表达式
[abc]?
匹配零个或一个字符,这些字符可以是
a
b
c
。因此,它与abc不匹配。正匹配将是空字符串、
a
b
c

另一方面,
[abc]+
匹配一个或多个字符,这些字符可以是
a
b
c
。因此,它可以匹配3个字符串
abc
。而且
aaa
bbba
也会匹配