如果它们不是句子中单词的第一个字符,则意图是将所有元音替换为空白。
对于实例,I AM A HAPPY MINISTER
=> I AM A HPPY MNSTR
。有没有办法在R中实现这个?
答案 0 :(得分:6)
您可以尝试使用环视:
gsub("(?<=[A-Z])[AEIOU]", "", "I AM A HAPPY MINISTER", perl=TRUE)
# [1] "I AM A HPPY MNSTR"
此正则表达式搜索以任何大写字母开头的大写元音,然后将它们替换为空字符串。
正如@Jota在评论中提到的,另一种选择是使用\\S
(除了空格类之外的任何东西),这将允许在连字符或引号之后删除元音,例如:
gsub("(?<=\\S)[AEIOU]", "", "I AM A HAPPY WELL-INTENTIONED MINISTER, D'ACCORD", perl=TRUE)
#[1] "I AM A HPPY WLL-NTNTND MNSTR, D'CCRD"
变体,使用参数ignore.case
:
gsub("(?<=\\S)[aeiou]", "", "I AM A HAPPY WELL-INTENTIONED MINISTER, D'ACCORD", perl = TRUE, ignore.case = TRUE)
答案 1 :(得分:3)
我们可以做到
x <- "I AM A HAPPY MINISTER"
gsub("([^\\w ])[AEIOU]", "\\1", x)
这会搜索不在单词限制或空格之后的元音。元音被删除 - 只返回非wordlimit字符(或空格)。
答案 2 :(得分:2)
我们可以SKIP
以[AEIOU]
开头并与字符串其他部分中的[AEIOU]
匹配的字词,将其替换为''
。
gsub("(\\b|\\s)[AEIOU](*SKIP)(*F)|[AEIOU]", "", str1, perl=TRUE)
#[1] "I AM A HPPY MNSTR"
str1 <- "I AM A HAPPY MINISTER"