0

我正在尝试编写仅从一行文本中提取价格的代码。

受RegEx 的价格激励?,我想出了以下命令:

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. 有什么建议么?

4

3 回答 3

3

我认为这应该有效:

'\\d+\\.\\d{1,2}(?!\\d)'
于 2013-02-18T03:20:36.447 回答
2
\\d+\\.\\d{1,2}(?!\\d)

我不确定 100% 支持负前瞻r,所以这里有一个替代方案:

\\d+\\.\\d{1,2}(?:[^\\d]|$)
于 2013-02-18T03:22:10.297 回答
-2

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

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

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

于 2013-02-18T03:20:41.620 回答