【发布时间】:2016-03-04 19:21:07
【问题描述】:
很简单的问题。我只需要使用正则表达式肯定的lookbehind 来捕获一些字符串,但我看不到这样做的方法。
这是一个例子,假设我有一些字符串:
library(stringr)
myStrings <- c("MFG: acme", "something else", "MFG: initech")
我想提取前缀为“MFG:”的单词
> result_1 <- str_extract(myStrings,"MFG\\s*:\\s*\\w+")
>
> result_1
[1] "MFG: acme" NA "MFG: initech"
几乎做到了,但我不想包括“MFG:”部分,所以这就是“积极的后视”的目的:
> result_2 <- str_extract(myStrings,"(?<=MFG\\s*:\\s*)\\w+")
Error in stri_extract_first_regex(string, pattern, opts_regex = attr(pattern, :
Look-Behind pattern matches must have a bounded maximum length. (U_REGEX_LOOK_BEHIND_LIMIT)
>
它抱怨需要“有界的最大长度”,但我看不出在哪里指定。我如何使积极的后视工作?确切地说,我可以在哪里指定这个“有界最大长度”?
【问题讨论】:
-
啊哈! Stringr 的正则表达式需要对后向进行限制!
-
大多数情况下(Wiktor 在下面的答案中列出的除外)环视是固定宽度的,因此您不能使用量词。
标签: regex r lookbehind stringr