在R语言中去除字符串中的 、 及转义斜杠问题
去除字符串中的\r、\n和转义斜杠
问题根源
你之前尝试的方法失效,主要是这几个问题:
- 正则里直接输入换行/回车符号,而非用转义序列
\r、\n - 误用了JavaScript风格的正则语法(
/[...]/g),R不支持这种写法 - 转义斜杠的匹配需要双重转义,R里反斜杠本身是转义字符,得用
\\\\才能匹配一个实际的反斜杠
正确解决代码
方案一:基础R的gsub
# 示例字符串(注意转义双引号需要用\\\\") string_x <- "\r\nvalue = T3M; \r\nstarting = current date - 2M; \r\nForeverTM = current date + 1; \r\nReduceby = MX: \\\"DYCOML\\\" on current_date; \r\nexchangeat = 1000*OFL;" # 先清除\r和\n,再清除转义斜杠 clean_str <- gsub("[\r\n]", "", string_x) clean_str <- gsub("\\\\", "", clean_str) # 输出结果 cat(clean_str)
方案二:stringr包的str_replace_all
library(stringr) # 一次性匹配并替换所有目标字符 clean_str <- str_replace_all(string_x, "[\r\n\\\\]", "") # 输出结果 cat(clean_str)
关键说明
[\r\n]是正则字符集,能同时匹配回车符(\r)和换行符(\n)- 匹配转义斜杠时必须写
\\\\:R里表示一个反斜杠要两个,正则匹配一个反斜杠也要两个,叠加就是四个 str_replace_all默认全局替换,不需要加g修饰符(这是JS的规则,R不适用)
内容的提问来源于stack exchange,提问作者hereforadoubt
相关产品推荐
相关产品推荐

