У меня есть слово «fan (s)», которое я хочу заменить словом «fanatic (s)», когда перед ним стоит комбо глагола «местоимение», показанное ниже.
gsub(
"(((s?he( i|')s)|((you|they|we)( a|')re)|(I( a|')m)).{1,20})(\\b[Ff]an)(s?\\b)",
'\\1\\2atic\\3',
'He\'s the bigest fan I know.',
perl = TRUE, ignore.case = TRUE
)
## [1] "He's the bigest He'saticHe's I know."
Я знаю, что нумерованные обратные ссылкиссылаясь на внутреннюю скобку первой группы.Есть ли способ, чтобы они ссылались только на круглые скобки, где три группы: (stuff before fan)(fan)(s\\b)
в псевдокоде.
Я знаю, что мое регулярное выражение может заменить все группы, если я знаю, что оно допустимо.Это просто часть обратной ссылки.
gsub(
"(((s?he( i|')s)|((you|they|we)( a|')re)|(I( a|')m)).{1,20})(\\b[Ff]an)(s?\\b)",
'',
'He\'s the bigest fan I know.',
perl = TRUE, ignore.case = TRUE
)
## [1] " I know."
Желаемый результат:
## [1] "He's the bigest fanatic I know."
Примеры совпадений
inputs <- c(
"He's the bigest fan I know.",
"I am a huge fan of his.",
"I know she has lots of fans in his club",
"I was cold and turned on the fan",
"An air conditioner is better than 2 fans at cooling."
)
outputs <- c(
"He's the bigest fanatic I know.",
"I am a huge fanatic of his.",
"I know she has lots of fanatics in his club",
"I was cold and turned on the fan",
"An air conditioner is better than 2 fans at cooling."
)