我有一个字符串列表,其中一些包含美元数字。例如:
'$34232 foo \n bar'
有没有一个[r]
只能返回包含美元金额的字符串的命令?
谢谢你!
Use \\$
以保护$
否则意味着“字符串结尾”:
grep("\\$[0-9]+",c("123","$567","abc $57","$abc"),value=TRUE)
这将选择包含美元符号后跟一个或多个数字的字符串(但不是例如$abc
). grep
with value=FALSE
返回索引。grepl
返回一个逻辑向量。 R 特有的一点是您需要指定\\$
, 不只是\$
(即需要额外的反斜杠进行保护):\$
会给你一个“无法识别的转义”错误。
@Cerbrus的回答,'\\$[0-9,.]+'
,将匹配得稍微更广泛(例如,它将匹配$456.89
or $367,245,100
)。它还会匹配一些难以置信的货币字符串,例如$45.13.89
or $467.43,2,1
(即,美元段中的 3 位数字分组只能使用逗号;美元和美分之间只能有一位小数点分隔)。我们的两个答案都会(错误地?)匹配$45abc
。如果幸运的话,您的数据不包含任何这些棘手的可能性。正确对待这一点一般来说很难;评论中提到的答案(什么是“最佳”美国货币正则表达式?)尝试这样做,结果得到了明显更复杂的答案,但如果您通过保护来适应 R 的答案可能会很有用$
适当地。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)