正则表达式“\\ |”在strsplit

时间:2012-08-04 07:25:27

标签: regex string r

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

3 个答案:

答案 0 :(得分:13)

由于

|

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

\|

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

\\|

答案 1 :(得分:5)

因为它是带引号的字符串。 在带引号的字符串中,您可以使用"转义\个字符。然后还需要将\本身转义为单个字面反斜杠。所以你引用的字符串意味着:\|

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

更具体的reference to regular expressions in R可能会很方便,但很多人会参考perl regular expressions

答案 2 :(得分:0)

从微不足道的我知道正则表达式,我认为“\ |”本身会起作用(反斜杠来逃避管道。资料来源:Regular Expressions Reference