正则表达式从R中的.sdf文件中提取唯一字段

时间:2014-02-22 20:15:23

标签: regex string r grep chemistry

我正在寻找R中的正则表达式来提取.sdf化学数据文件中给出的字段。 在这种情况下,字段由<分隔。 >并在行的开头跟随“>”。 例如。在

的情况下
string=">  <FIELD1>\nfield text1\n\n>  <FIELD2>\nfield text2\n\n>  <FIELD3>field text3"

它必须返回

fields=c("FIELD1","FIELD2","FIELD3")

(它们可能会发生多次,所以我只需要unique()个) 有什么想法吗?

欢呼声, 汤姆

2 个答案:

答案 0 :(得分:3)

您可以使用gregexprregmatches来提取子字符串,使用unique来删除重复项。

unique(regmatches(string, gregexpr("(?<=<)\\w+(?=>)", string, perl = TRUE))[[1]])
# [1] "FIELD1" "FIELD2" "FIELD3"

答案 1 :(得分:3)

试试这个。它提取由括号括起的正则表达式部分匹配的字符串部分,然后使用unique简化它:

library(gsubfn)
strapplyc(string, "<([^>]*)>", simplify = unique)

,并提供:

[1] "FIELD1" "FIELD2" "FIELD3"

修改次要简化。