{m}{n}(“正好n次”两次)是如何工作的?

2024-01-24

所以,以某种方式(玩弄),我发现自己有一个正则表达式,比如\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}或类似的。

为什么会发生这种情况?它是否在正则表达式/Java 文档中明确说明,或者只是 Java 开发人员即时做出的决定,或者可能是一个错误?

或者它实际上没有被忽视并且实际上意味着完全不同的东西?

这并不重要,但它不是全面的正则表达式行为,Rubular http://www.rubular.com/r/eefKxje4nf做我所期望的。

注意 - 标题主要是为了让那些想知道它是如何工作的(而不是为什么)的用户方便搜索。


IEEE 标准 1003.1 http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap09.html says:

多个相邻重复符号(“*”和间隔)的行为会产生未定义的结果。

所以每个实现都可以随心所欲,只是不要依赖任何特定的东西......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

{m}{n}(“正好n次”两次)是如何工作的? 的相关文章

随机推荐

  • 在 MonoDroid 上实现 IJavaObject

    我目前正在尝试在类上实现 ILocationListener 以便接收 GPS 更新 这不是在 Activity 上 而是在普通的 C 类上 作为 ILocationListener 合约的一部分 我需要支持 I JavaObject pu
  • Blackberry BrowserField白色空页问题

    你好 我想在 BrowserField 中显示 html 内容 我使用代码 blove 来执行此操作 但我只看到白色的空白页面 BrowserField demo new BrowserField String res p demo p d
  • 异步和等待 - 控制台、Windows 窗体和 ASP.NET 之间的区别

    我一直在学习异步 等待的使用 我想我理解了底层的概念 然而 大多数关于 async await 的 Channel 9 教程 MSDN 文章和 Stack Overflow 答案都使用基于 GUI 的应用程序 Windows 窗体应用程序
  • JDBC 和 MySql 安装和配置

    我必须使用 JDBC 和 MySql 做一个项目 有人可以指导我尝试安装和运行这些该死的东西吗 我不知道该怎么做以及做什么 我一生中从未使用过数据库 所以我不知道 我需要安装 配置什么等 有人可以提供一些有用的链接供我开始吗 Vogella
  • UIButton的addtarget:触摸后未调用!

    我有以下代码 当我按下 UIButton 时 不会调用任何内容 并且不会崩溃 calloutButton UIView alloc initWithFrame CGRectMake left width2 2 3 5 230 230 UIB
  • 使用 Hibernate 登录并存储记录的用户名

    我正在开发一个简单的项目云 其中注册用户登录后可以下载和上传文件 我正在使用 Eclipse Java EE JSF 和 Hibernate 进行开发 在我的项目中 我可以登录用户 如果数据正确 我会打开用户菜单 但无法弄清楚在哪里存储有关
  • 使用 UIAppearance 更改标签高度

    有没有办法使用 UIAppearance 更改 UINavigationBar 内标签的高度 这是代码和正在发生的情况的图像 以便您可以了解问题所在 UINavigationBar appearance setTitleVerticalPo
  • iPhone - UIView addSubview 顶部间隙

    我有一个加载到 MainWindow xib 中的视图 它只是一个带有 uiimageview 的视图 在整个屏幕 320 X 480 上显示图像 当应用程序加载时 我显示此视图 然后执行 self view addSubview tabb
  • WP7应用程序版本

    Windows Phone 7 应用程序似乎有两个带有版本号的位置 一个位于 AssemblyInfo cs 中 通过AssemblyVersion AssemblyFileVersion属性 另一个是 WMAppManifest xml
  • 如何自定义Boost.Log的“TimeStamp”格式

    我想得到年 月 日时 分 秒 分数 2位数字 如果我使用 Y m d H M S f 我几乎得到了什么我想要秒的小数部分 最后一部分 例外 它在我的 Windows XP 上显示 6 位数字 我不知道如何只获取 2 位数字 知道吗 我正在用
  • 创建 Log4j Logger 的开销是多少

    我的应用程序中有一些 Web 服务 我想根据 Web 服务名称将它们记录到不同的文件中 为此 我正在创建记录器 myLogger Logger getLogger logKey 我想知道是否应该缓存这些记录器以避免为每次调用创建它们 或者我
  • python 如何在“for”循环中处理对象实例化

    我有一个非常复杂的课程 class C pass 我有这个测试代码 for j in range 10 c C print c 这使 lt main C instance at 0x7f7336a6cb00 gt lt main C ins
  • Gradle Eclipse WTP:War 文件包含在另一个 war 文件中

    我有两个网络 战争 项目 A 和 B B 取决于 A 当我构建 B 时 A 按预期作为 A jar 包含在 B 的 WEB INF 中 我还使用 Gradle 的 eclipse 和 eclipseWtp 插件来生成 Eclipse 项目
  • 将分类器投入生产

    我已经使用 joblib 保存了分类器管道 vec TfidfVectorizer sublinear tf True max df 0 5 ngram range 1 3 pac clf PassiveAggressiveClassifi
  • 如何在 C++ 中使用 gnuplot?

    我想用 C 程序生成的 x y 点绘制一些图形 我可以从终端通过 gnuplot 命令成功绘制这些数据 但我想从 C 程序中绘制同样的东西 这在 ubuntu 16 04 lts 中可能吗 当然 只需使用标准包命令安装 gnuplot su
  • 这会导致C++内存泄漏吗?

    我对 C 内存管理有疑问 这 显然 与引用和指针有关 假设我有一堂课Class用一种方法my method OtherClass Class my method OtherClass other object new OtherClass
  • 按标签过滤和选择

    如何通过选择和忽略标签来获取最新的指标 例如 以下查询 last over time application version site NYC instance Test id 1h 返回以下项目 application version i
  • 使用 Jersey 客户端的连接池

    我对泽西岛很陌生 我进行了搜索 但无法弄清楚是否有办法进入泽西客户 to use 连接池而不是每次发送新请求时都创建连接 整个想法是重用池中的连接集 这将节省大量资源 仅供参考 我不是在寻找连接 保持活动状态 这就是我现在正在做的事情 pu
  • 使用约束 B 样条线近似形状轮廓

    我正在寻找一种生成约束样条线的可能性 以近似形状 在我的例子中 是足迹轮廓 作为原始数据 我有一个包含数百个 xy 坐标对的表 这些坐标是从足迹边界收集的 样条曲线应该只近似数据点 样条曲线不需要通过数据点 我希望能够在一定程度上平滑样条线
  • {m}{n}(“正好n次”两次)是如何工作的?

    所以 以某种方式 玩弄 我发现自己有一个正则表达式 比如 d 1 2 从逻辑上讲 对我来说 这应该意味着 一个数字恰好一次 恰好两次 即一个数字正好两次 但事实上 它似乎只意味着 一个数字恰好一次 因此忽略了 2 String regex