我可能会错过一些东西,但我想知道为什么这种模式有效:
Pattern.compile("([0-9]{1,})");
尽管出现无效,但编译不会抛出异常。
很多
答案 0 :(得分:2)
尽管出现无效
量词可以使用{n,m}
语法表示,其中:
{n}
- 完全n
次{n,}
- 至少n
次{n,m}
- 至少n
但不超过m
次来源:https://docs.oracle.com/javase/tutorial/essential/regex/quant.html
(请注意,没有{,m}
量词表示"不超过m
次")因为我们并不真正需要一个,我们可以通过{创建它{1}})
因此{0,m}
有效,仅表示"至少一次"。
为避免混淆,我们可以将{1,}
量词替换为更为人熟知的{1,}
形式来简化它,例如
+
很可能您也不需要通过用括号括起Pattern.compile("([0-9]+)");
来创建捕获组1。我们可以访问与0组的帮助匹配的正则表达式,因此在大多数情况下这样的组1是多余的。