2016-08-06 3 views
0

У меня есть столбец в моей dataframe, которая имеет свободный текст в немMultiline извлечения текста в R с stringr

Я хотел бы, чтобы извлечь текст после INDICATIONS FOR EXAMINATION и до следующей капитализированных линии. В приведенном ниже примере результат будет «Анемия»

INDICATIONS FOR EXAMINATION 
Anaemia 

PROCEDURE PERFORMED 
Gastroscopy (OGD) 

У меня возникли некоторые проблемы, как я использую stringr и я не могу показаться, чтобы получить многострочные матчи. Я использую:

EoE$IndicationsFroExamination<-str_extract(EoE$Endo_ResultText, '(?<=INDICATIONS FOR EXAMINATION).*?[A-Z]+') 

ответ

1

Я сделал регулярное выражение немного более общим, так что будет соответствовать все вхождения и использовали str_extract_all пакет из stringr:

matches <- str_extract_all(str, "(?<=[A-Z]\n)([^\n]*)") 

что, учитывая строку, представленную , следует возвращать:

[[1]] 
[1] "Anaemia"   "Gastroscopy (OGD)" 
+0

Я хочу, чтобы матч остановился до следующей строки с заглавной буквы, что означает, что он должен возвращать только «Анемия» –

+0

Это дает вам каждый матч. Итак: 'matches [[1]] [1]' будет '' Анемия "и' matches [[1]] [2] 'будет' 'Гастроскопия (OGD)" ' Если вы когда-нибудь захотите во-первых, вы можете просто использовать 'matches <- str_extract (str," (? <= [AZ] \ n) ([^ \ n] *) ")' – clmarquart