Ruby 正则表达式将十进制数与百分比匹配,并且仅匹配十进制数

Ruby regex to match decimal number with percentage and only decimal numbers

提问人:user846445 提问时间:12/15/2014 最后编辑:Hunter McMillenuser846445 更新时间:12/16/2014 访问量:1249

问:

ruby 正则表达式 () 同时匹配 45.00 和 45.00%。如何调整此正则表达式,使其仅匹配 45.00 和 45.00%\d*[,]?\d*[.]\d+

Ruby 正则 否定正则表达式 环节

评论

0赞 Alin Purcaru 12/15/2014
嗯。。。我希望在你的最后一句话中,你的意思只是 45.00 而不是 45.00%,否则就没有意义了。
1赞 Cary Swoveland 12/15/2014
您看到了@AlinPurcaru的评论,但既没有回复也没有澄清您的问题。不好。请通过编辑进行澄清。提供一些示例来说明您想要和不想从字符串中提取的内容会很有帮助。
0赞 Cary Swoveland 12/17/2014
在阅读了您对我的回答的评论后,澄清了您的问题。我已经删除了我的答案。其他人可能希望看到评论,内容如下:“例如,在我的文档中,它有 45.00 , 45.00(任何空格数)%, 45,000.00(任何空格数)$ 和其他如 34,999.00 , 56.78.我只想提取十进制,例如 (98.05, 9,990.00) 而不是 (98.56 %, 87.90$)”。顺便说一句,与其发表评论,不如编辑您的问题并在那里添加信息。

答:

3赞 Alin Purcaru 12/15/2014 #1

只需添加一个否定的 lookahead 并使十进制匹配所有格:

\d*[,]?\d*[.]\d++(?!%)

演示

评论

0赞 Alin Purcaru 12/15/2014
@pguardiario 感谢您的指正!我记错了,所有格=贪婪,因为我把它与贪婪的算法联系在一起,你不会回溯。
0赞 nPn 12/15/2014 #2

我也不确定你到底在寻找什么。你可以试试这个,它会匹配两者 45.00 和 45.00%

(\d*[,]?\d*\.\d+[%]?)

但测试正则表达式的最佳方法是使用 Rubular

您可以输入几行测试数据,然后检查您的正则表达式是否符合您的预期

0赞 pguardiario 12/15/2014 #3

我会把它清理到:

\d[\d,.]*+(?!%)

评论

1赞 Alin Purcaru 12/15/2014
您在清理中引入了一些误报:0,,0,
0赞 pguardiario 12/16/2014
@Alin和我删除了一些假阴性:1,000,000 :)