Чтобы удалить es
в конце слова , которому предшествует s
или c
, вы можете использовать
gsub("([sc])es\\b", "\\1", text)
gsub("(?<=[sc])es\\b", "", text, perl=TRUE)
Для удаления их в конце строк , вы можете go при использовании своего $
якоря:
gsub("([sc])es$", "\\1", text)
gsub("(?<=[sc])es$", "", text, perl=TRUE)
Первый gsub
шаблон TRE ([sc])es\b
: группа захвата # 1, который соответствует либо s
или c
, затем сопоставляется es
, а затем \b
удостоверяется, что следующий символ не является буквой, di git или _
. \1
в замене - это обратная ссылка на значение, сохраненное в буфере памяти группы захвата № 1.
Во втором примере с регулярным выражением PCRE (из-за perl=TRUE
), (?<=[sc])
положительный взгляд за спиной используется вместо ([sc])
группы захвата. Взгляды не потребляют текст, соответствующий текст не попадает в значение соответствия, и, следовательно, нет необходимости его восстанавливать. Замена - пустая строка.