Мы можем попытаться создать чередование регулярных выражений, которое будет нацелено на оба условия s1
и s2
для удаления:
s1 <-'aaa'
s2 <- 'bbb'
regex <- paste0("\\b(?:", s1, "|", s2, ")\\b\\s*")
s <- 'aaa bbb poefaaapeka 111bbbcde'
output <- sub("\\s*$", "", gsub(regex, "", s))
s
output
[1] "aaa bbb poefaaapeka 111bbbcde"
[1] "poefaaapeka 111bbbcde"
Здесь используется шаблон регулярного выражения \b(?:aaa|bbb)\b\s*
, и обратите внимание, что онтакже обрезает любое количество пробелов справа от термина aaa
или bbb
. Дополнительный вызов sub
требуется, если первый член во входных данных будет aaa
или bbb
. Это связано с тем, что мы не можем обрезать пробелы с обеих сторон (из-за боязни объединения слов), поэтому мы произвольно решили сделать это только с правой стороны.