查找最多包含两个元音的单词
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"
【讨论】:
以上是关于查找最多包含两个元音的单词的主要内容,如果未能解决你的问题,请参考以下文章