Регулярное выражение для извлечения уникальных полей из файла.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"