正则表达式,只匹配价格而不是其他数字

时间:2013-02-18 03:18:01

标签: regex r

我正在努力想出能够从一行文字中提取价格的代码。

RegEx for Prices?激励,我想出了以下命令:

gregexpr('\\d+(\\.\\d{1,2})', '23434 34.232 asdf 3.12  ')

[[1]]
[1]  7 19
attr(,"match.length")
[1] 5 4
attr(,"useBytes")
[1] TRUE

但是,就我而言,我只希望3.12匹配而不是34.232。有什么建议吗?

3 个答案:

答案 0 :(得分:3)

我认为这应该有效:

'\\d+\\.\\d{1,2}(?!\\d)'

答案 1 :(得分:2)

\\d+\\.\\d{1,2}(?!\\d)

我不是100%确定r支持否定前瞻,所以这里有另一种选择:

\\d+\\.\\d{1,2}(?:[^\\d]|$)

答案 2 :(得分:-2)

一个或多个数字后跟一个点,后跟1或2位数字,后跟空格或字符串结尾

\\d+\\.\\d{1,2}(\w|$)

编辑:根据评论,R使用双重转义