c# - 正则表达式 - 从字符串中仅获取十进制数
问题描述
我在下面有一个正则表达式:
(?<=Bonus)[\s+][\$][\s+]?(\d(?:[d{0,2}.\s]*\d)?)
这得到了预期的结果,但是,有时我也会得到一个额外的数字。
例如,这是上下文:
Bonus $0. 01 87% 88% 89% 90% 92% 93% 94%
所以我的正则表达式得到 0 。01就好了,但不是每次。当有更多如下行时:
Bonus $0. 01 87% 88% 89% 90% 92% 93% 94%
...
Bonus $0. 11 87% 88% 89% 90% 92% 93% 94%
...
Bonus $0. 15 87% 88% 89% 90% 92% 93% 94%
...
有时它会从字符串中得到一个额外的数字:
0. 01
0. 11 8
0. 15
或有时会漏掉一位小数:
0. 1 (but it should be 0. 15)
预期结果将始终是一个小数点后 2 位的数字。数字中可能有也可能没有空格。可能像 0.01、0. 01 甚至 0.(更多空格)01...
我当前的正则表达式有什么问题?
解决方案
正确匹配所有内容:
(?<=Bonus)[\s+][\$][\s+]?(\d*\.\s*\d{2}?)
推荐阅读
- django - 如何将 forms.RadioSelect() 设置为必填字段
- css - 顺风的文字
- mongodb - 如何找到 Prisma 项目的 Mongodb 连接字符串?
- jq - mouse_sub 到 jq 获取值
- css - (HTML CSS)试图使页脚链接居中
- php - 如何使用 Stripe 和 PHP 增加付款次数(订阅)
- javascript - 在 d3js 中画线导致 d3.v5.min.js:2 错误:
属性 d:预期数量 - java - 无法解析符号“BillingResponse”
- json - 从熊猫导出到 json 时出现“溢出错误:达到最大递归级别”
- haskell - 使用`elem`函数在树中搜索节点 - Haskell