У меня есть текст, в котором есть случайные символы новой строки \n. Я хочу выделить часть этого текста после определенной фразы.

text <- "Lorem ipsum dolor sit amet, \nconsectetur adipiscing elit, \nsed do eiusmod tempor incididunt ut labore et dolore magna aliqua. \nUt enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. \nDuis aute irure dolor in reprehenderit in voluptate velit esse \ncillum dolore eu fugiat nulla pariatur. \nExcepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

Я хочу извлечь текст из фразы Duis до конца. Мои попытки ниже

str_extract(text, "(Duis.+)")
[1] "Duis aute irure dolor in reprehenderit in voluptate velit esse "

str_extract(text, "(Duis.+)(\\s.*)")
[1] "Duis aute irure dolor in reprehenderit in voluptate velit esse \ncillum dolore eu fugiat nulla pariatur. "

Мой желаемый результат

"Duis aute irure dolor in reprehenderit in voluptate velit esse \ncillum dolore eu fugiat nulla pariatur. \nExcepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

Как я могу достичь цели, не заменяя \n в исходном тексте?

0
Umer Naeem 2 Мар 2021 в 11:14

2 ответа

Лучший ответ

Вы можете использовать [\\s\\S] для сопоставления всего, включая новые строки.

stringr::str_extract(text, 'Duis[\\s\\S]*')
[1] "Duis aute irure dolor in reprehenderit in voluptate velit esse \ncillum dolore eu fugiat nulla pariatur. \nExcepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
1
Ronak Shah 2 Мар 2021 в 08:27

Вы можете сохранить исходный текст таким, какой он есть, и создать переменную, содержащую этот текст после изменений, что означает, что вы можете сделать следующее

var oldText = "myText";
var newText = oldText.split("\n");
console.log(newText)
  • это вернет каждую часть после \ n вашего текста внутри массива, и вы можете выбрать нужную часть из индекса массива
0
Root Zxcvpn 2 Мар 2021 в 08:22