我想匹配一个正则表达式特殊字符,\^$.?*|+()[{.我试过了:
x <- "a[b"
grepl("[", x)
## Error: invalid regular expression '[', reason 'Missing ']''
Run Code Online (Sandbox Code Playgroud)
(等价stringr::str_detect(x, "[")或stringi::stri_detect_regex(x, "[").)
将值加倍以逃避它不起作用:
grepl("[[", x)
## Error: invalid regular expression '[[', reason 'Missing ']''
Run Code Online (Sandbox Code Playgroud)
也没有使用反斜杠:
grepl("\[", x)
## Error: '\[' is an unrecognized escape in character string starting ""\["
Run Code Online (Sandbox Code Playgroud)
我如何匹配特殊字符?
这个问题的一些特殊情况是陈旧的,写得足够好,因为它可以像这样重复关闭:
在R正则表达式中逃脱的时期
如何逃避R中的问号?
在正则表达式中转义管道("|")
我正在运行Windows XP Pro和R版本2.15.1 R安装在以下文件夹中:
C:\ Program Files\R\R-2.15.1
我正在尝试创建一个读取.csv文件的函数,如下所示:
xxx <- function(id, directory, summarize = FALSE) {
data <- read.table('C:\xxx\classes\R_Prog\specdata\data.csv')
head(data)
}
Run Code Online (Sandbox Code Playgroud)
我收到了错误
错误:'\ R'是从"C:\ R"开始的字符串中无法识别的转义符
我的目录结构/文件夹命名约定有问题吗?
我尝试使用我创建的一些函数和脚本创建一个包(在Mac上使用X11).虽然R CMD检查正在进行,但它遇到了如下问题:
temp = trim(unlist(strsplit(lp.add(ranefterms[[i]]),
+ "\+")))
Error: '\+' is an unrecognized escape in character string starting "\+"
Run Code Online (Sandbox Code Playgroud)
然而,奇怪的是,我的函数实际上没有"\ +".相反,它有"\\+"(见下文).所以我不知道为什么"\\+"被识别为"\ +".
for(i in 1:n)
temp = trim(unlist(strsplit(lp.add(ranefterms[[i]]), '\\+')))
Run Code Online (Sandbox Code Playgroud)
为了进一步挖掘,我查看了Rcheck文件夹中的packageName-Ex.R文件.事实证明,在检查过程中所有的"\"都已更改为"\"(例如,我需要的两个斜杠,如strsplit()和grepl()等函数
我想知道它可能是什么原因.对不起,我无法想出一个可重现的例子......