Сформулируйте слово с помощью регулярных выражений

Я пытаюсь остановить слова в тексте с помощью регулярных выражений.

c <- "Foo is down. No one wants Foos after this. Before, people liked Fooy a lot."

Желаемый результат:

"Foo is down. No one wants Foo after this. Before, people liked Foo a lot."

Мне нужно сохранить слово Foo, но удалите все символы, которые следуют в этом слове, сохраняя оставшуюся часть строки.

Мне удалось отделить суффикс от основания слова, я могу удалить все после вариаций слова "Foo", и я экспериментировал с границами слова, но не могу понять, как добраться до желаемого результата.

2 ответа

Решение

Одно возможное регулярное выражение для решения этой проблемы заменяет "Foo с одной или несколькими буквами после него" на "Foo":

> x = "Foo is down. No one wants Foos after this. Before, people liked Fooy a lot."
> stringr::str_replace_all(x, "Foo[a-z]+", "Foo")
[1] "Foo is down. No one wants Foo after this. Before, people liked Foo a lot."

Мы можем попробовать использовать gsub и заменить шаблон (?<=Foo)\S+ с пустой строкой:

x <- "Foo is down. No one wants Foos after this. Before, people liked Fooy a lot."
output <- gsub("(?<=Foo)\\S+", "", x, perl=TRUE)
output

[1] "Foo is down. No one wants Foo after this. Before, people liked Foo a lot."

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

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