R: удалить конец текста после совпадения строки

Я хотел бы удалить любой текст, который появляется после совпадения определенного символа либо THE END или же FINIS, Я знаю, что это очень похоже на эту тему, но я не достаточно опытен в регулярных выражениях, чтобы сделать эту работу для меня.

Мой текст - книги Шекспира, взятые из проекта Гутенберга. Они обычно выглядят примерно так

txt <- "... thou hast tam'd a curst shrow.   LUCENTIO. 'Tis a wonder, 
  by your leave, she will be tam'd so. Exeunt  THE END   <<THIS ELECTRONIC  VERSION OF THE 
  COMPLETE WORKS OF WILLIAM ..."

или же

txt <- "... thou hast tam'd a curst shrow.   LUCENTIO. 'Tis a wonder, 
  by your leave, she will be tam'd so. Exeunt  FINIS  <<THIS ELECTRONIC  VERSION OF THE 
  COMPLETE WORKS OF WILLIAM ..."

Мой идеал будет выглядеть примерно так gsub("^[THE END]*|^[FINIS]*", "", txt) возврате "... thou hast tam'd a curst shrow. LUCENTIO. 'Tis a wonder, by your leave, she will be tam'd so. Exeunt

1 ответ

Решение

Вы достаточно близки, чтобы сделать это, вы должны использовать:

gsub("(THE END|FINIS).*", "", txt)

Рабочая демонстрация

Кстати, как указал thelatemail в своем комментарии sub будет достаточно для одной замены.

Другие вопросы по тегам