4
>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,"\\|")工作?

4

3 回答 3

15

自从

|

在 reg-exps 中具有特殊含义,需要对其进行转义,因此要匹配| 实际的正则表达式

\|

由于\在声明字符串文字时反过来是一个特殊字符(您可能会从中识别出它\n等),因此\需要自行转义。即,为了创建包含\|您需要的字符串文字

\\|
于 2012-08-04T07:28:34.660 回答
7

因为它是一个带引号的字符串。"在带引号的字符串中,您可以使用 .转义字符来包含字符\。A\本身也需要转义为单个文字反斜杠。所以你引用的字符串意味着:\|

现在在正则表达式中,a|是一个特殊字符,除非它被转义,否则它不会按字面意思匹配。R 中的正则表达式也用反斜杠转义,因此字符串字面量表示与 完全匹配的表达式"\\|"的字符串。为什么有效是因为这意味着完全匹配您要拆分的字符串中的分隔符。\||"\\|"|

在 R 中更具体地引用正则表达式可能会很方便,但它和许多人一样,引用perl 正则表达式

于 2012-08-04T07:30:31.353 回答
0

从我对正则表达式的了解很少,我认为“\|” 本身可以工作(反斜杠转义管道。来源:正则表达式参考

于 2012-08-04T07:29:06.857 回答