【发布时间】:2012-11-05 09:40:02
【问题描述】:
我正在尝试在 R 中执行后向正则表达式来查找模式。我希望这会拉出 'bob' 中的 'b',但我得到了一个错误。
> regexpr("(?<=a)b","thingamabob")
Error in regexpr("(?<=a)b", "thingamabob") :
invalid regular expression '(?<=a)b', reason 'Invalid regexp'
这不会引发错误,但它也找不到任何东西。
> regexpr("(.<=a)b","thingamabob")
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE
我很困惑,因为 regexpr 的帮助页面明确指出后向应该可以工作:http://stat.ethz.ch/R-manual/R-patched/library/base/html/regex.html
有什么想法吗?
【问题讨论】:
-
哦,文档....尝试设置
perl = TRUE。 -
哦,很好,但是为此类问题获得代表让我感觉很肮脏。
-
@joran 如果它让你感觉更好,我们都可以否决你吗? ;)
-
@Dason 如果你愿意花费代表来减轻我的罪恶感,我绝不会妨碍你! :)
-
如果您试图从第一个 b 之后的 a 之后获取所有内容,那么这将在没有后视的情况下完成:
library(gsubfn); strapplyc("thingamabob", "a(b.*)")