正则表达式字符串,匹配R中的任意数量的尾随字符

时间:2014-01-28 17:24:03

标签: regex r

我有一个字符向量,其中每个条目都是这样的:

"ABC1:123_CDE/CDE"

我想编写一个匹配ALL和ONLY字符尾部“_”的正则表达式,以便我得到:

ABC1:123

我尝试了"^_$|[CDE/]",但似乎也选择了初始C.

如果你设置perl = TRUE,我会在某处读到可以在R中使用lookbehind,但我对Perl正则表达式匹配也不是很熟悉。

非常感谢,如果有一些显而易见的东西,我会道歉

3 个答案:

答案 0 :(得分:1)

sub("_.*", "", "ABC1:123_CDE/CDE")
#[1] "ABC1:123"

答案 1 :(得分:0)

_

之前匹配任何内容
.*(?=_)

答案 2 :(得分:0)

您可以使用不使用正则表达式的拆分方法,因为您正在查找文字字符:

(Perl的)

my @res = split('_', $str, 2);
print $res[0];

(R语言)

strsplit("ABC1:123_CDE/CDE", "_", TRUE)[[1]][1]