regex - 需要正则表达式 - 没有美分的美元
问题描述
我正在尝试创建一个匹配美元符号后的数字但之后没有美分的正则表达式。
33.92 美元 - 不匹配
211 美元 - 匹配 211
这就是我到目前为止所拥有的。
(?<=\$)\d+(?!\.)
看着这串……
东西 $122.30 $45 $1.111
...它正确匹配“45”,但也匹配“12”。
我明白为什么它是错误的,但我不知道如何解决它。
谢谢
解决方案
您可以使用
(?<=\$)\d+(?![.\d])
请参阅正则表达式演示。
显示使用所有格量词和原子分组的同义表达式:
(?<=\$)\d++(?!\.)
(?<=\$)(?>\d+)(?!\.)
那些不支持后视的环境的表达式应该在\d+
模式周围有一个捕获组:
\$(\d+)(?![.\d])
^ ^
那么所需的值在第 1 组中。
仅供参考:\$([0-9]+)($|[^.0-9])
甚至可以使用 POSIX ERE。
细节
(?<=\$)
-$
必须立即出现在当前位置的左侧\d+
- 1+ 位数(?![.\d])
- 当前位置的右侧不应立即出现点或数字。
正则表达式图:
推荐阅读
- google-sheets - 无法使用具有空值的 Google Sheet Api V4 统一附加
- corda - 在 Corda 中,迁移到 Enterprise 时解析 master.changelog.json 时出错
- c# - 绑定到 IEditableObject 时是否经常遇到 WPF 中的错误?
- matlab - MATLAB中长度不等的多个箱线图
- python - Pandas 使用 nan 访问行
- c++ - C++ gdi::Bitmap 到内存中的 PNG 图像
- javascript - Javascript 写入文件系统
- cross-browser - 让 Polymer 3.0 元素向后兼容 IE11 和 Firefox 56?
- sql - Oracle 错误 (36,14): PL/SQL: ORA-22905: 无法访问非嵌套表项中的行
- android - 不兼容的类型:getFragmentManager 不起作用