如何在R语言中使用正则表达式在两个标点字符间添加空格?
问题分析与解决
你的代码无法正常工作的核心原因是替换字符串中的\\s不会被解析为空格——\\s是正则匹配模式里用来匹配空白字符的 shorthand,但在str_replace的替换模板中,它会被当成字面量的\s输出,而不是实际的空格。
修正后的代码
直接在替换模板里用空格代替\\s即可:
library(stringr) s <- "-+" str_replace(s, "([:punct:])([:punct:])", "\\1 \\2")
运行这段代码会输出:"- +",正好满足你在两个标点间加空格的需求。
更精准的匹配(可选)
如果你的需求只是针对-和+这两个特定标点,而非所有标点符号,可以把正则表达式改成更精准的模式,避免误匹配其他标点组合:
str_replace(s, "([-+])([-+])", "\\1 \\2")
内容的提问来源于stack exchange,提问作者Lilly
相关产品推荐
相关产品推荐

