我有一个包含2735个字符的字符串。我想在字符向量中搜索该字符串。当我运行grep()
时grep(pattern=substr(string,1,2560), x=myvector)
我收到错误:
Error in grep(pattern = substr(string, 1, 2560), x = myvector) :
invalid regular expression 'all the characters of my string...'
如果我尝试
grep(pattern=substr(string,1,2559), x=myvector)
我没有收到错误。
问题:传递给grep()时字符串长度是否有限制?如果是这样,我应该如何解决它?
答案 0 :(得分:6)
perl=TRUE
,以使用PCRE库:
pat <- paste(rep("a", 2560), collapse="")
x <- paste0(ch, ch)
grep(pat, x)
#Error in grep(pat, ch) :
# invalid regular expression 'aaa....'
grep(pat, x, perl=TRUE)
#[1] 1
我猜这可以根据?grep
中的评论来发挥作用:
如果要进行大量正则表达式匹配(包括非常长的字符串),则需要考虑使用的选项。通常PCRE将比默认正则表达式引擎更快,并且仍然更快固定= TRUE(特别是当每个模式仅匹配几次时)。