为什么 "X, at MOST n times" 正则表达式量词不包含在 Java 中,在"X{,n}"语法中?



Java 文档告诉我们你可以有这个贪婪的量词:

X{n}    X, exactly n times
X{n,}   X, at least n times
X{n,m}  X, at least n but not more than m times

没有提到有X, at MOST n times.


所以我做了一个小测试:

boolean atMost = Pattern.matches("X{,3}", "XX");

我希望atMosttrue,因为假设下限为零是安全的。相反,我得到了一个例外:

Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 0
X{,3}
^

请注意,这不是贪婪不情愿占有欲的事情:"X{,3}?""X{,3}+"也不起作用。

我本可以使用"X{0,3}"来实现我正在寻找的模式,但这不是我的问题。


为什么 Java 中没有X, at MOST n times正则表达式量词包含在 X{,n} 语法中?

在其他编程语言或正则表达式"风格"中如何?

这不是 {n,m} 问题,而是 PARSING 问题。

从左到右,{ + 数字是必须验证的可能范围
的全部内容量词,否则 { 是文字,解析继续。

此外,paser希望有一个简单的数字可用,因为范围开始与
范围结束。它不想同时抖动/允许同时 {min_default,max_default} 或{,}

在这么低的水平上,如果两者兼而有之,那就太复杂了。

相关内容

  • 没有找到相关文章

最新更新