R语言gsub函数替换$符号未达预期输出的原因问询
R语言
gsub替换$符号异常原因说明 核心原因
gsub默认使用正则表达式模式进行匹配,$是正则语法中的特殊锚定字符,代表字符串的结束位置,不会被识别为字面意义的美元符号。
运行结果解释
你提供的两段代码运行逻辑如下:
- 第一段代码
> gsub('$', ' ' ,"$170,000") [1] "$170,000 "
这里的$匹配的是整个字符串的末尾位置,替换为空格后,相当于在原字符串末尾新增了一个空格,所以不会替换开头的$符号,自然得不到" 170,000"的结果。
2. 第二段代码
> gsub(',', ' ' ,"$170,000") [1] "$170 000"
,不属于正则特殊字符,会被直接识别为字面量逗号,所以可以正常替换为空格,输出符合预期。
正确替换$符号的方案
如果需要匹配替换字面量的$符号,有两种常用方案:
- 对正则特殊字符加转义符:R中正则的转义需要写双反斜杠,代码如下
gsub('\\$', ' ', "$170,000") # 输出结果:" 170,000" - 开启fixed参数关闭正则匹配:设置
fixed = TRUE后,gsub会直接匹配字面量字符,不会解析正则特殊符号,代码如下gsub('$', ' ', "$170,000", fixed = TRUE) # 输出结果:" 170,000"
内容的提问来源于stack exchange,提问作者Samuel Perche
相关产品推荐
相关产品推荐

