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