因此,以某种方式(玩转),我发现自己使用了regex这样的正则表达式\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
使用{n}{m,n}
或相似,可以看到相似的结果。
为什么会这样?它是在regex / Java文档中的某个地方明确声明的,还是只是Java开发人员即时做出的决定,还是一个错误?
还是实际上不被忽略而实际上意味着完全其他的东西?
并不是很重要,但是它并不是全面的正则表达式行为,Rubular可以满足我的期望。
注意-标题主要是为希望了解其工作原理(而非原因)的用户提供可搜索性。
当我使用Java regex语法在RegexBuddy中输入您的正则表达式时,它显示以下消息
量词之前必须带有可重复«{2}»的标记
将正则表达式更改为显式使用分组^(\d{1}){2}
可以解决该错误并按预期工作。
我假设java regex引擎只是忽略了错误/表达式,并且可以使用到目前为止已编译的东西。
编辑
在参考IEEE-标准在@
piet.t的答案似乎支持这一假设。
编辑2 (对@fncomp表示感谢)
为了完整起见,通常(?:)
会避免捕获该组。完整的正则表达式变为^(?:\d{1}){2}
问题内容: 请看下面的正则表达式,这里是任何正则表达式。 此正则表达式将测试确切X发生的时间或时间。 是否有一个正则表达式量词可以测试的发生恰好或次? 问题答案: 没有单个量词的意思是“恰好是m或n次”。你的操作方式很好。 替代方法是: 其中和是的值。
本文向大家介绍正则表达式{n,m}量词(至少n次,最多m次),包括了正则表达式{n,m}量词(至少n次,最多m次)的使用技巧和注意事项,需要的朋友参考一下 正则表达式{n,m}量词: {n,m}量词可以重复前面匹配的字符n-m次,至少n次,最多m次。 语法结构: 构造函数方式: 对象直接量方式: 浏览器支持: IE浏览器支持此元字符。 火狐浏览器支持此元字符。 谷歌浏览器支持此元字符。 实例代码:
本文向大家介绍在Python程序中计算n + nn + nnn +…+ n(m次),包括了在Python程序中计算n + nn + nnn +…+ n(m次)的使用技巧和注意事项,需要的朋友参考一下 我们将编写一个程序,用Python计算以下系列。检查我们要编写的程序的示例输入和输出。 因此,我们将有两个数字,并且我们必须计算如上 生成的序列之和。请按照以下步骤实现输出。 算法 您必须创建一个通用
描述 (Description) 占有量词[X{n,m}+]匹配存在至少n但不超过m次的X. 例子 (Example) 以下示例显示了possesive量词的用法。 package com.wenjiangs; import java.util.regex.Matcher; import java.util.regex.Pattern; public class PossesiveQuantifi
描述 (Description) 不情愿量词[X{n,m}?]匹配存在至少n但不多于m次的X. 例子 (Example) 以下示例显示了不情愿量词的用法。 package com.wenjiangs; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ReluctantQuantifierDem
描述 (Description) 贪心量词[X{n,m}]匹配至少为n但不超过m次的X. 例子 (Example) 以下示例显示了贪婪量词的用法。 package com.wenjiangs; import java.util.regex.Matcher; import java.util.regex.Pattern; public class GreedyQuantifierDemo {