R中是否有用于正则表达式的原始字符串?

Meg*_*ron 7 regex r

在Python中,您可以使用原始字符串:

import re
re.sub(r"\\", ":", "back\\slash")  # r"\\" instead of "\\\\"
Run Code Online (Sandbox Code Playgroud)

R中也存在吗?例如,这是一个等效的代码片段,其中R中没有原始字符串:

library(stringr)
str_replace("back\\slash", "\\\\", ":")
Run Code Online (Sandbox Code Playgroud)

我希望能够做到这一点:

str_replace("back\\slash", raw("\\"), ":")
Run Code Online (Sandbox Code Playgroud)

此功能是否已经存在,还是应该只实现自己的功能raw()

Ben*_*ker 27

从 R 4.0.0 开始,这是可用的。

原始字符常量也可以使用类似于 C++ 中使用的语法:r"(...)"使用...任何字符序列,但它不能包含结束序列 )"。分隔符对[]{}[c]an 也可以使用。为了增加灵活性,可以在开始引号和开始分隔符之间放置多个破折号,只要在结束分隔符和结束引号之间出现相同数量的破折号即可。

从示例中?Quotes

r"{(\1\2)}"
## [1] "(\\1\\2)"
Run Code Online (Sandbox Code Playgroud)

(注意,双反斜杠是 R 的反斜杠的打印表示:cat()在这个对象上将打印(\1\2)

  • 这是一个好消息,因为这个问题正在认真讨论或正在开发中,并将在可预见的将来得到解决。感谢您的回复。也许这个要求太多了,但我发现 Python 中的另一个“伟大的简化器”功能对其一致性和实用性很有用,那就是文档字符串对象语法,即使用平衡三引号(“”“文档字符串双引号语法”“”或''' docstring 单引号语法 ''') 用于多行注释和内部文档字符串。我必须向 R 核心语言开发人员请求它。 (2认同)