R中的正则表达式:在字符序列之前匹配字符串

时间:2017-03-25 05:22:46

标签: r regex

我想提取某个单词前面的字符串的一部分。例如。我想在“无用”之前得到一切。

a <- "Experiment A, useless (03/25)"
b <- grep('^[^useless]+', a, perl=T)
regmatches(a,b)

这应该返回“实验A”。

然而,这不起作用。 R给出“子串中的错误(x [ind],因此,eo):无效的子串参数”。

4 个答案:

答案 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"