【发布时间】:2020-12-19 06:17:55
【问题描述】:
为什么这个正则表达式评估返回 'false' ? Pattern.matches("[abc]?", "abc") // 错误。
根据定义“?”评估字符串是否与 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)
}
}
【问题讨论】: