我想提取某个单词前面的字符串的一部分。例如。我想在“无用”之前得到一切。
a <- "Experiment A, useless (03/25)"
b <- grep('^[^useless]+', a, perl=T)
regmatches(a,b)
这应该返回“实验A”。
然而,这不起作用。 R给出“子串中的错误(x [ind],因此,eo):无效的子串参数”。
答案 0 :(得分:3)
我们可以使用sub
来匹配,
后跟零个或多个空格(\\s*
),然后是“无用”和其他字符(.*
)和将其替换为空白(""
)
sub(",\\s*useless\\b.*", "", a)
#[1] "Experiment A"
答案 1 :(得分:3)
Lookahead是为此而做的:
b <- regexpr(".*(?=, useless)", a, perl=TRUE)
regmatches(a, b)
## [1] "Experiment A"
.*
匹配任何字符序列,但前瞻(?=, useless)
表示它只匹配后面跟着字符串“,无用”的文字。
答案 2 :(得分:1)
sub("(\\w*), useless.*","\\1",a)
答案 3 :(得分:0)
sub('(.*),.*','\\1', a, perl=T)
[1] "Experiment A"