r中正则表达式的\\ vs \ backreference之间的差异

时间:2017-03-31 06:50:31

标签: r regex string backslash backreference

我试图在r。

中学习正则表达式

目前我只是在测试一些文本替换操作,我在互联网上查看了一些示例。然后我尝试了以下操作:

列出一些随机单词以测试正则表达式操作

  

mylist< - c(" Calendar"," Vinegar"," Character"," Boiler"," Conductor& #34;," Franchisor")

尝试匹配"或"用这些词来代替" ee" - 使用匹配表达式" ^([a-zA-Z] *)或",并将匹配的结果替换为" \ 1ee",但它不起作用:

  

sub(" ^([a-zA-Z] *)或"," \ 1ee",mylist)   [1]"日历" "醋" "字符" "锅炉" " \ 001ee" " \ 001ee"

尝试匹配"或"用这些词来代替" ee" - 使用匹配的表达式" ^([a-zA-Z] *)或",并将匹配的结果替换为" \ 1ee",得到预期的结果:

  

sub(" ^([a-zA-Z] *)或"," \ 1ee",mylist)   [1]"日历" "醋" "字符" "锅炉" " Conductee" "加盟"

我的问题是为什么我们必须使用" \ 1"让反向引用正常工作?在正则表达式中不进行反向引用通常使用单个斜杠调用" \"而不是" \"?

我想通过在互联网上阅读一些示例代码和示例来猜测,当你想要使用斜杠时,#34; \"字符,你必须指定为" \"。在这种情况下,这是正确的申请/解释吗?

但是还没有认识到" \ n"和" \ t"作为特殊的逃脱角色?我们可以直接在字符串中使用它们而没有任何问题,所以为什么不" \ 1"?

这与" ^([a-zA-Z] *)或"的事实有什么关系?和" \ 1ee"被指定为函数sub的2个独立参数?如何在r?

中指定函数sub

另外,致电:

  

sub(" ^([a-zA-Z] *)或"," \ 1ee",mylist)

产生

  

[1]"日历" "醋" "字符" "锅炉" " \ 001ee" " \ 001ee"

为什么会产生" \ 001ee"?为什么" \ 1"出来" \ 001"如果r将其视为直接文本表达式?是" \ 1"在r?

中有什么特别的意义

[编辑]感谢Wiktor解释文字" \"的要求。但是,有人可以在我的帖子中解释其他问题吗?这就是为什么它不能完全复制"如何转义 - 反斜杠 - 在-r-string"主题。

0 个答案:

没有答案