如何在R中搜索字符串中的美元符号?

Par*_*ari 1 regex r

我有一个包含字符串的列的数据集,

"管理250,000美元的预算,利用Excel监控和比较运营费用与之前的预算,从而为公司节省10%的预算"

我想标记所有带有美元符号后跟数字的字符串.

我想这样编码

grep("$[^0-9]", cand_emp$description, ignore.case = TRUE, perl = FALSE, value = FALSE,
           fixed = FALSE, useBytes = FALSE, invert = FALSE)
Run Code Online (Sandbox Code Playgroud)

看来,这不是正确的编码方式.

任何帮助高度赞赏

谢谢!PARTH

Fed*_*zza 5

由于美元符号是一个特殊字符,你必须通过前面这样的反斜杠来逃避它:

\$
Run Code Online (Sandbox Code Playgroud)

您可以查看文档

基本构建块是与单个字符匹配的正则表达式.大多数字符,包括所有字母和数字,都是与自身匹配的正则表达式.具有特殊含义的任何元字符都可以通过在其前面加上反斜杠来引用.扩展正则表达式中的元字符是.\ | ()[{^ $*+ ?,但请注意这些是否具有特殊含义取决于上下文.

更新:正如Gregor在评论中指出的那样,你必须逃避R中的反斜杠,所以你必须使用:

\\$
Run Code Online (Sandbox Code Playgroud)

你可以有:

grep("\\$[^0-9]", cand_emp$description, ignore.case = TRUE, perl = FALSE, value = FALSE,
       fixed = FALSE, useBytes = FALSE, invert = FALSE)
Run Code Online (Sandbox Code Playgroud)

另一方面,如果您不喜欢使用两个反斜杠,则可以通过以下方式利用字符类[``]:

grep("[$][^0-9]", cand_emp$description, ignore.case = TRUE, perl = FALSE, value = FALSE,
       fixed = FALSE, useBytes = FALSE, invert = FALSE)
Run Code Online (Sandbox Code Playgroud)

更新:我注意到你更新了你的问题,我想标记所有带有美元符号后跟数字的字符串.为此,您必须^从示例中删除,使用:

[$][0-9]+
Run Code Online (Sandbox Code Playgroud)

  • 在R中,你必须用另一个反斜杠"\\ $`来逃避反斜杠. (3认同)