我正在尝试创建一个只找到2位整数或精度为2位小数的正则表达式。
在底部的示例字符串中,我只想找到以下内容:
21和10.50
使用此表达式,除了我想要捕获的字符串外,还会捕获100%:
(\d){1,2}(\.?)([0-9]?[0-9]?){1,2}
我知道我需要在某处使用^%
,但我无法弄清楚它在哪里。非常感谢任何建议。
这是我的示例字符串:
每小时最高赚21美元 - 用!!提供食物! 送货司机在他们想要的时候工作,并在他们这么做时赚很多钱。
所有订单都已预付,只需将它们拿起并送到饥肠辘辘的食客。没有排队等候或没有收据和预付卡。
开始工作快速而轻松。立即开始。
立即申请
为什么选择?
订单数量超过任何其他外卖平台
我们100%的餐厅都是官方合作伙伴
有竞争力的薪酬:每笔订单费+里程+提示
我们保证每小时最低10.50美元/小时*
创建自己的日程安排&按你想要的时间工作
答案 0 :(得分:2)
正则表达式中的单词边界将为您提供更多控制权。
由于字边界有点严格,我们需要引入OR条件来解决两个满足你的正则表达式的情况。
(\b[\d]{2}\.[\d]{2}\b)|(\b[\d]{2}\b)
编辑:试试这个,
\b[\d]{2}\b(\.[\d]{2})?
第一个例子有可能失败,因为它是短路的方式依赖于顺序。我相信这应该适当地处理多个案件。
答案 1 :(得分:2)
我认为这应该有效:
(?<!\d)((\d+\.\d\d)|(\d\d))(?!%|\d)
修改强>
改进版本:
(?<!\d)(\d{1,2}(?:\.\d{1,2})?)(?!%|\d)
答案 2 :(得分:1)
您可以尝试以下变体:(\d{1,}|[\d.])\b(?!%)
它使用negative lookahead (?!%)
排除%
符号后面的数字。