在R语言中分割含|的字符串:如何拆分abc与def?
R语言正确分割包含
|的字符串 你遇到的问题是因为|和.都是正则表达式中的特殊元字符:
|在正则里表示或逻辑,直接用"|"作为分隔符时,会被解析成匹配空字符串或空字符串,所以会把每个字符都拆分出来,甚至包括首尾的空字符串。".|."里的.表示匹配任意单个字符,这个表达式相当于匹配任意单个字符(因为A|B匹配A或B,这里两个都是任意字符),所以拆分后所有内容都被分隔符匹配,只剩下空字符串。
正确的解决方案有两种:
1. 使用fixed()将分隔符视为普通文本
str_split支持通过fixed()指定纯文本分隔符,忽略正则规则:
library(stringr) str_split("abc|def", fixed("|"))
输出结果:
[[1]] [1] "abc" "def"
2. 对正则特殊字符进行转义
如果要使用正则模式,需要对|进行转义(R中需要双反斜杠\\,因为单个反斜杠是转义R字符串本身的),或者把它放到字符类[]中:
# 双反斜杠转义 str_split("abc|def", "\\|") # 字符类包裹 str_split("abc|def", "[|]")
这两种写法都能得到正确的拆分结果。
内容的提问来源于stack exchange,提问作者Nam-Tien T.Nguyen
相关产品推荐
相关产品推荐

