我试图在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"主题。