使用正则表达式(regex)在R中同时替换多个模式
我有一个字符串向量,我想同时从所有以-ses或-ces结尾的字符串(单词)中删除-es。我想同时做,而不是同时做的原因是,有时在删除一个结尾后,会出现另一个结尾,而我不想将此模式应用于一个单词两次。 我不知道如何同时使用两种模式,但这是我所能做到的最好的:使用正则表达式(regex)在R中同时替换多个模式,r,regex,gsub,R,Regex,Gsub,我有一个字符串向量,我想同时从所有以-ses或-ces结尾的字符串(单词)中删除-es。我想同时做,而不是同时做的原因是,有时在删除一个结尾后,会出现另一个结尾,而我不想将此模式应用于一个单词两次。 我不知道如何同时使用两种模式,但这是我所能做到的最好的: text <- gsub("[sc]+s$", "[sc]", text) text以“ces”和“ses”结尾的字符串遵循相同的模式,即“*es$” 如果我理解正确,你不需要两种模式 例如: x=c(“ces”、“ses”、“mes
text <- gsub("[sc]+s$", "[sc]", text)
text以“ces”和“ses”结尾的字符串遵循相同的模式,即“*es$”
如果我理解正确,你不需要两种模式
例如:
x=c(“ces”、“ses”、“mes)
gsub(pattern=“*([cs])es$”,replacement=“\\1”,x)
[1] “c”“s”“mes”
希望能有帮助
M要删除单词末尾的es
,即前面有s
或c
,您可以使用
gsub("([sc])es\\b", "\\1", text)
gsub("(?<=[sc])es\\b", "", text, perl=TRUE)
第一个gsub
TRE模式是([sc])es\b
:a#1匹配s
或c
,然后匹配es
,然后\b
确保下一个字符不是字母、数字或
。替换中的\1
是对存储在捕获组1内存缓冲区中的值的反向引用
在第二个使用PCRE正则表达式的示例中(由于perl=TRUE
),(?感谢您的回答。我想排除任何其他可能性,例如-mes。
gsub("([sc])es$", "\\1", text)
gsub("(?<=[sc])es$", "", text, perl=TRUE)