>str= "AAC|Australia Acquisition Corp. - Ordinary Shares|S|N|D|100"
> strsplit(str,"\\|")
[[1]]
[1] "AAC"
[2] "Australia Acquisition Corp. - Ordinary Shares"
[3] "S"
[4] "N"
[5] "D"
[6] "100"
我想\\|
等于|
?
也许\\|
等于\|
,
为什么strsplit(str,"\\|")
可以工作?
答案 0 :(得分:13)
由于
|
在reg-exps中有特殊含义需要进行转义,因此匹配|
实际正则表达式是
\|
由于\
在声明字符串文字时(您可能会从\n
等识别出来)是一个特殊字符,因此\
需要自行转义。即,为了创建一个包含\|
的字符串文字,你需要
\\|
答案 1 :(得分:5)
因为它是带引号的字符串。
在带引号的字符串中,您可以使用"
转义\
个字符。然后还需要将\
本身转义为单个字面反斜杠。所以你引用的字符串意味着:\|
。
现在在正则表达式中,|
是一个特殊字符,除非被转义,否则不会按字面匹配。 R中的正则表达式也使用反斜杠转义,因此字符串文字"\\|"
表示字符串\|
,它是一个与|
完全匹配的表达式。为什么"\\|"
有效是因为这意味着完全匹配|
,它在您要拆分的字符串中显示为分隔符。
更具体的reference to regular expressions in R可能会很方便,但很多人会参考perl regular expressions。
答案 2 :(得分:0)
从微不足道的我知道正则表达式,我认为“\ |”本身会起作用(反斜杠来逃避管道。资料来源:Regular Expressions Reference