В str_extract
.
не будет соответствовать терминаторам строки (\n
), если вы не скажете это. Используйте функцию модификатора regex
с аргументом dotall = T
для сопоставления по нескольким строкам. Обратите внимание, что я также исправил ваше регулярное выражение, удалив [^\\n]+
и добавив .*
плюс внешний вид (?=\n\nThis grant)
:
str_extract(test_case,
regex("(?<=Address:\n).*(?=\n\nThis grant)",
dotall = T
)
)
# [1] "The PowerPool Corp\n1434 Holyfried Route, Unit A\nMelope, VA 21151"
Также могут быть более простые / быстрые способы решения этой проблемы. Например, если вы знаете, что первые и последние строки всегда являются ненужными, вы можете разбить их на \n
, а затем выбрать соответствующие строки или удалить ненужные строки, например str_split(test_case, "\n")[[1]][2:4]
против str_split(test_case, "\n")[[1]][-c(1, 5, 6)]
.