查找最多包含两个元音的单词

Posted

技术标签:

【中文标题】查找最多包含两个元音的单词【英文标题】:Find words with at most two vowels 【发布时间】:2022-01-15 19:08:02 【问题描述】:

我做了一个功能来搜索有两个元音在一起的单词。该函数将元音一起提供给我(例如:ee, ou),但我需要完整的单词(tree,four)。

lt <- c("tree", "four", "hello", "play")

vowel <- function(x)   
  a<- regexpr(pattern = "[aeiou]2", x) 
    regmatches(x, a)


vowel(lt)

# [1] "ee" "ou"

提前谢谢你

【问题讨论】:

只是出于好奇,您是否想做一个单词相似度? 不,我正在搜索不同的模式,然后将其应用于单核苷酸重复序列 (SNP)。谢谢。 【参考方案1】:

我们可以简单地使用grepl,我认为这对用户更友好。

vowel <- function(x) 
   
   
   a<- grepl("[aeiou]2", x) 
   x[a]
 
 vowel(lt)
[1] "tree" "four"

【讨论】:

【参考方案2】:

另一种方法是替换

[aeiou]2

\w*[aeiou]2\w*

在单词中包含双元音前后的字母。

【讨论】:

不,它匹配包含两个后续元音的任意长度的单词。 \w* 匹配任何字母字符零次或多次。检查regex101.com/r/cpEBth/1。 是的,你当然完全正确。我不知道是什么导致我一时失明,让我看到 \\b 那里有 \\w ... 为评论道歉【参考方案3】:

这是stringr的解决方案:

library(stringr)

lt[str_count(lt, '[^aeiou]') ==2]
[1] "tree" "four"

【讨论】:

【参考方案4】:

如果没有匹配,regexpr 返回-1。因此,如果我们转换为逻辑,索引本身可以用于子集,而不是使用regmatches

lt[regexpr("[aeiou]2", lt) >0]
[1] "tree" "four"

【讨论】:

以上是关于查找最多包含两个元音的单词的主要内容,如果未能解决你的问题,请参考以下文章

有两个元音的 Grep 单词

使用 Oracle 的正则表达式功能来查找双元音序列,例如。 ‘ie’, ‘ee’, ‘oa’

python如何查找两个文本文件之间的所有单词匹配

我们如何在匹配两个文本文件时查找和替换单词?

查找文本文件中至少有两个共同单词的所有行(Bash)

只包含一个元音字母的最长的英语单词是哪个?