相关疑难解决方法(0)

{m} {n}("恰好n次"两次)如何工作?

所以,某种方式(玩弄),我发现自己有一个正则表达式 \d{1}{2}.

从逻辑上讲,对我而言,它应该意味着:

(一个数字恰好一次)恰好两次,即一个数字恰好两次.

但事实上,它似乎只是意味着"一个数字恰好一次"(因此忽略了 {2}).

String regex = "^\\d{1}{2}$"; // ^$ to make those not familiar with 'matches' happy
System.out.println("1".matches(regex)); // true
System.out.println("12".matches(regex)); // false
Run Code Online (Sandbox Code Playgroud)

使用可以看到类似的结果 {n}{m,n}或类似.

为什么会这样?它是在regex/Java文档中明确说明的,还是只是Java开发人员即时做出的决定,还是它可能是一个bug?

或者它实际上没有被忽略,它实际上完全意味着什么呢?

并不重要,但它不是全面的正则表达式行为,Rubular做了我所期望的.

注意 - 标题主要用于想要了解其工作原理(不是为什么)的用户的可搜索性.

java regex

77
推荐指数
3
解决办法
3186
查看次数

在某些情况下,量词{0}是否有意义?

例:

/(?:美孚){0}酒吧/

我在另一个答案中看到了类似的东西.起初我想"应该是什么",然后,"好的可能有意义,背后有一种负面的看法",所以Foo以前不允许bar,但这不起作用.

你可以在Regexr上看到这个:它只匹配,bar但它也与barin 匹配Foobar.
当我为行的开头添加锚点时:

/^(?:Foo){0}bar/
Run Code Online (Sandbox Code Playgroud)

它表现得像我期待的那样.它只是相匹配bar,而不是barFoobar.

但这与我只使用/bar/或使用的行为完全相同/^bar/.

量词{0}只是一种无用的副作用,还是真的有用的行为呢?

regex

11
推荐指数
1
解决办法
244
查看次数

标签 统计

regex ×2

java ×1