R

时间:2015-07-21 17:48:59

标签: regex r

我试图在R:

中使用这个正则表达式

\?(?=([^'\\]*(\\.|'([^'\\]*\\.)*[^'\\]*'))*[^']*$)

我这样逃避:

\\?(?=([^'\\\\]*(\\\\.|'([^'\\\\]*\\\\.)*[^'\\\\]*'))*[^']*$)

我收到invalid regexp错误。

Regexpal与正则表达式没有问题,我已经检查过R错误消息中的解释正则表达式与我在Regex pal中使用的完全相同,所以我排序不知所措。我不认为逃避是问题所在。

代码:

output <- sub("\\?(?=([^'\\\\]*(\\\\.|'([^'\\\\]*\\\\.)*[^'\\\\]*'))*[^']*$)", "!", "This is a test string?")

1 个答案:

答案 0 :(得分:4)

R默认使用POSIX P O 操纵 S 系统我< / strong> nterface)正则表达式的标准(请参阅这些SO帖子[12]和?regex [警告经纪人:大砍刀级密度提前] )。

前瞻((?=...)),后瞻((?<=...))及其否定((?!...)(?<!...))可能是{{1}最突出的例子特定的( P erl- C ompatible R egular E xpressions)表单,与之不兼容PCRE

POSIX可以通过激活R perl选项来训练您理解正则表达式;所有TRUE正则表达式函数(basegsubgrepl等都可以使用此选项:

regmatches