R-正则表达式问题

时间:2011-07-22 09:29:09

标签: regex r

我需要使用regexp重新塑造我的数据框,特别是这种行

X21_GS04.A.mzdata

必须成为:

GS04.A

我试过

pluto <- sub('^X[0-90_]+','', my.data.frame$File.Name, perl=TRUE)

它有效;比我试过

pluto <- sub('.mzdata$','', my.data.frame$File.Name, perl=TRUE)

它也有效。

问题是我不知道如何将两个代码合二为一,我尝试了一个这样的脚本

pluto <- sub('^X[0-90_]+ | .mzdata$','', my.data.frame$File.Name, perl=TRUE)

但没有任何意外。 有人能跟我说错吗??

最佳

的Riccardo

2 个答案:

答案 0 :(得分:9)

你所遵循的正则表达式是:

^X\d+_(.*)\.mzdata$

这将匹配您的整个表达式并捕获您要在组中保留的部分。您现在可以用\1(对捕获组的引用)替换它。

在R中,这将是:

result <- sub('^X\\d+_(.*)\\.mzdata$', '\\1', my.data.frame$File.Name, perl=TRUE)

答案 1 :(得分:2)

删除正则表达式中的空格。还要转义. char:\.,即:

^X[0-9]+_|\.mzdata$