R正则表达式中的转义周期

Kyl*_*ndt 32 regex r

除非我遗漏了什么,否则这个正则表达式看起来非常简单:

grepl("Processor\.[0-9]+\..*Processor\.Time", names(web02))
Run Code Online (Sandbox Code Playgroud)

但是,它不喜欢逃脱的时期,\.我的意图是文字时期:

Error: '\.' is an unrecognized escape in character string starting "Processor\."
Run Code Online (Sandbox Code Playgroud)

我对这个正则表达式语法有什么误解?

mu *_*ort 53

我的R-Fu很弱到不存在,但我想我知道是什么了.

R处理器的字符串处理部分必须查看字符串内部以将\n转义和相关的转义序列转换为它们的字符等价物.R不知道是什么\.意思所以它抱怨.您希望将转义的点放入正则表达式引擎中,这样您就需要\通过字符串管理器.做这种事情的通常方法是逃避逃脱:

grepl("Processor\\.[0-9]+\\..*Processor\\.Time", names(web02))
Run Code Online (Sandbox Code Playgroud)

在另一种语言(R)中嵌入一种语言(正则表达式)通常有点混乱,当两种语言使用相同的转义语法时更是如此.


day*_*yne 5

以 R 为中心的方法是使用符号[::],例如:

grepl("[:.:]", ".")
# [1] TRUE
grepl("[:.:]", "a")
# [1] FALSE
Run Code Online (Sandbox Code Playgroud)

来自文档 ( ?regex):

扩展正则表达式中的元字符是 . \ | ( ) [ { ^ $ * + ?,但请注意,这些是否具有特殊含义取决于上下文。

[:punct:] 标点符号:! " # $ % & ' ( ) * + , - ./ : ; < = > ? @ [ \ ] ^ _ ` { | } ~.