Регулярное выражение для извлечения уникальных полей из файла.sdf в R

Я в поиске регулярного выражения в R для извлечения полей, указанных в файле химических данных.sdf. Поля в этом случае отделяются < > и следуют за "> " в ​​начале строки. Например, в случае

string=">  <FIELD1>\nfield text1\n\n>  <FIELD2>\nfield text2\n\n>  <FIELD3>field text3"

это должно было бы вернуться

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

(они могут происходить несколько раз, поэтому мне понадобится только unique() одни) Есть мысли?

ура, Том

2 ответа

Решение

Попробуй это. Он извлекает часть строки, совпадающую с частью регулярного выражения, заключенную в скобки, а затем упрощает ее, используя unique:

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

давая:

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

ПЕРЕСМОТРЕНО незначительное упрощение.

Ты можешь использовать gregexpr а также regmatches извлечь подстроки и unique удалить дубликаты.

unique(regmatches(string, gregexpr("(?<=<)\\w+(?=>)", string, perl = TRUE))[[1]])
# [1] "FIELD1" "FIELD2" "FIELD3"
Другие вопросы по тегам