Regex R:查找集合中不包含字符序列的单词

Regex R:查找集合中不包含字符序列的单词,regex,r,search,Regex,R,Search,我试图从向量中找到任何不包含连续元音的单词,我将其定义为[aeiou]。例如,我想要“阿拉斯加”或“密西西比”,而不是“乔治亚州”或“夏威夷”。我知道{2,}指定了两个或更多的东西,而[^…]不是什么东西。但我不知道如何在grep下组合它们。帮忙 状态 试试这个。看演示 对于r它将是\\b(?![a-z]*[aeiou]{2})[a-z]+\\b 使用perl=True运行此命令,您几乎已经找到了答案: states[!grepl("[aeiou]{2}", states)] [1] "Ala

我试图从向量中找到任何不包含连续元音的单词,我将其定义为
[aeiou]
。例如,我想要“阿拉斯加”或“密西西比”,而不是“乔治亚州”或“夏威夷”。我知道
{2,}
指定了两个或更多的东西,而
[^…]
不是什么东西。但我不知道如何在grep下组合它们。帮忙

状态
试试这个。看演示

对于
r
它将是
\\b(?![a-z]*[aeiou]{2})[a-z]+\\b


使用
perl=True

运行此命令,您几乎已经找到了答案:

states[!grepl("[aeiou]{2}", states)]
[1] "Alaska"      "Mississippi"

我会在从
状态提取时使用逻辑否定(如上所述),而不是尝试编写更复杂的正则表达式。

我只是尝试在R
grepl(\\b(?![a-z]*[aeiou]{2})[a-z]+\\b],states,perl=TRUE)中运行它
并且对于OP提供的
状态
向量的所有元素,结果都是
FALSE
。如果没有
perl=TRUE
,则它不是有效的R正则表达式。而不是
perl=TRUE
<代码>'True'=TRUE
还认为尾部模式“[a-z]+”可能没有帮助,也可能有害。即使使用
perl=TRUE
,它仍然失败。
states[!grepl("[aeiou]{2}", states)]
[1] "Alaska"      "Mississippi"