Python 正则表达式用于查找五个连续的辅音

Python 正则表达式用于查找五个连续的辅音,python,regex,Python,Regex,我需要一个python正则表达式,用于查找具有五个连续辅音的单词 这些话会起作用- tnortvcvni (rtvcvn) kahjdflka (hjdflk) 但是这些单词不会(没有元音的五个字母) *[bcdfghjklmnpnpqrstvwxyz]{5}.*是一种方式,假设小写字母 你最好在英语中找到一个有5个连续辅音的单词,尽管有一些,例如“流行语”甚至是令人发狂的“tsktsks”。*[bcdfghjklmnpqrstvwxyz]{5}.是一种方式,假设字母小写 你最好在英语中找到一

我需要一个python正则表达式,用于查找具有五个连续辅音的单词

这些话会起作用-

tnortvcvni (rtvcvn)
kahjdflka (hjdflk)
但是这些单词不会(没有元音的五个字母)


*[bcdfghjklmnpnpqrstvwxyz]{5}.*
是一种方式,假设小写字母


你最好在英语中找到一个有5个连续辅音的单词,尽管有一些,例如“流行语”甚至是令人发狂的“tsktsks”。

*[bcdfghjklmnpqrstvwxyz]{5}.
是一种方式,假设字母小写

你最好在英语中找到一个有5个连续辅音的单词,尽管有一些,例如“流行语”甚至是令人发狂的“tsktsks”。

可能类似(假设
y
是元音)

可能类似(假设
y
是元音)


您只需排除所有元音,包括小写和大写字母,并排除不属于某个单词的所有其他字符(使用
\W


更好的是,使用不区分大小写的标志,并且只传递小写字母

(?i)\w*[^aeiou\W]{5}\w*

您可以排除所有元音,包括小写和大写字母,并排除不属于某个单词的所有其他字符(使用
\W


更好的是,使用不区分大小写的标志,并且只传递小写字母

(?i)\w*[^aeiou\W]{5}\w*

似乎您的意思不是固定长度的5个字符,而是至少:

(?:(?![aeiou])[a-z]){5,}


注意:设置
i
标志(如果存在)。

似乎您不是指5个字符的固定长度,而是指最小长度:

(?:(?![aeiou])[a-z]){5,}


注意:如果存在,请设置
i
标志。

有几种方法可以表示字符类中的所有辅音项(均假定不区分大小写):

  • 只需简单地将它们全部初始化
    [bcdfghjklmnpnpqrstvwxyz]
  • 用范围列出它们
    [b-df-hj-pq-tv-z]
  • 使用否定字符类
    [^\W\d\u aeiou]
    (在完全支持Unicode的情况下无法正常工作\W)
取其中一个,简单地添加
{5}
以匹配它5次。如果要匹配完整单词而不是仅匹配5个辅音部分,也要匹配周围的字母,例如
[a-z]*[b-df-hj-pq-tv-z][a-z]*


您也可以使用lookaheads(如果支持,python也可以),例如
(?=[^aeiou]{5})[a-z]{5,}
,以匹配同时是字母的5个非元音的序列。同样可以使用lookback,例如
[a-z]{5}(?有几种方法可以表示字符类中的所有辅音项(都假定不区分大小写):

  • 只需简单地将它们全部初始化
    [bcdfghjklmnpnpqrstvwxyz]
  • 用范围列出它们
    [b-df-hj-pq-tv-z]
  • 使用否定字符类
    [^\W\d\u aeiou]
    (在完全支持Unicode的情况下无法正常工作\W)
选择其中一个,简单地添加
{5}
以匹配它5次。如果你想匹配完整的单词而不是仅仅匹配5个辅音部分,也要匹配周围的字母,例如
[a-z]*[b-df-hj-pq-tv-z][a-z]*


您也可以使用lookaheads(如果支持的话,python会这样做),例如
(?=[^aeiou]{5})[a-z]{5,}
来匹配同时是字母的5个非元音的序列。使用lookaheads也可以这样做,例如
[a-z]{5}(?如果支持lookaheads,则稍微短一点:
(?![a-z]*[a-z]*[aeiou])[a-z]{5}
@revo:My,那太时髦了。你最好把
(i)
的东西放在不区分大小写的地方。(我的注册ex知识不超过20世纪90年代的
grep
)现在还不清楚OP到底想要什么。他们谈论的是5个字符长的字符串,但作为输出的字符串有6个字符。如果支持lookahead,则会稍微短一点:
(?![A-z]*[aeiou])[A-z]{5}
@revo:My,这很时髦。你最好把
(i)
的东西放在不区分大小写的地方。(我的reg-ex知识并没有超出20世纪90年代的
grep
)不清楚OP到底想要什么。他们谈论的是5个字符长的字符串,但作为输出的字符串有6个字符。由于堆栈溢出是Q&a归档文件(我找不到确切的副本),因此这可能非常有用。为了更好地回答这个问题,最好向我们展示您迄今为止所做的尝试:。由于堆栈溢出是一个问答存档(我找不到确切的副本),因此这可能非常有用。为了更好地回答此问题,最好向我们展示您迄今为止所做的尝试:。您缺少
\d\uuu
,可以使用不区分大小写功能删除其中一个大小写flag@SebastianProske你说得对。我编辑了这篇文章。你的
\d\uuu
缺失,可能会通过使用case insensitivity fla删除其中一个案例g@SebastianProske你说得对。我编辑了这篇文章。当然。如果把y添加到范围内,那不是更好吗?尽管OP上写着“python”,这只是在regex标记上被问到的,因此针对不同的复杂程度有各种各样的答案是合适的。当然。另一种方法不是更好吗?将y添加到范围中?尽管OP说“python”,这只是在regex标签上被问到的,因此,针对不同的复杂程度有各种各样的答案是合适的。
(?:(?![aeiou])[a-z]){5,}