Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的正则表达式来查找遵循模式的单词:元音、辅音、元音、辅音_Python_Regex - Fatal编程技术网

Python中的正则表达式来查找遵循模式的单词:元音、辅音、元音、辅音

Python中的正则表达式来查找遵循模式的单词:元音、辅音、元音、辅音,python,regex,Python,Regex,尝试学习Python中的正则表达式以查找具有连续元音-辅音或辅音-元音组合的单词。在正则表达式中我将如何执行此操作?如果不能在正则表达式中完成,有没有一种有效的方法可以在Python中完成 ^(([aeiou][^aeiou])+|([^aeiou][aeiou])+)$ >>重新导入 >>>conce_re=re.compile(r'^([aeiou][^aeiou])+|([^aeiou][aeiou])+)$) >>>连续匹配(“捆”) >>>连续比赛(“保释”) >>> 我相信您应该

尝试学习Python中的正则表达式以查找具有连续元音-辅音或辅音-元音组合的单词。在正则表达式中我将如何执行此操作?如果不能在正则表达式中完成,有没有一种有效的方法可以在Python中完成

^(([aeiou][^aeiou])+|([^aeiou][aeiou])+)$

>>重新导入
>>>conce_re=re.compile(r'^([aeiou][^aeiou])+|([^aeiou][aeiou])+)$)
>>>连续匹配(“捆”)
>>>连续比赛(“保释”)
>>>

我相信您应该能够使用如下正则表达式:

r"([aeiou][bcdfghjklmnpqrstvwxz])+"
r"([aeiou]+[bcdfghjklmnpqrstvwxz]+)+"
匹配元音后接辅音和:

r"([bcdfghjklmnpqrstvwxz][aeiou])+"
用于匹配辅音后跟元音。作为参考,+表示它将匹配所能找到的该模式的最大重复。例如,将第一个模式应用于“ababab”将返回整个字符串,而不是单个出现的“ab”

如果要匹配一个或多个元音,后跟一个或多个辅音,可能会如下所示:

r"([aeiou][bcdfghjklmnpqrstvwxz])+"
r"([aeiou]+[bcdfghjklmnpqrstvwxz]+)+"

希望这能有所帮助。

如果你把辅音有向图映射成单个辅音,那么最长的这个词就是解剖学上的10*VC字符串

如果你正确地映射了y,那么你就得到了完整的字符串,比如乙酰丙酮作为8*VC,下胚轴作为8*CV

如果你不需要字符串是完整的,你会得到一个9*CV模式的化学元素和一个9*VC模式的过度想象

如果允许连续的辅音或元音交替出现,则有许多10*个单词,如
(C+V+)
。包括腹腔镜子宫切开术和输尿管膀胱吻合术

主要技巧是首先将所有辅音映射到C,将所有元音映射到V,然后进行VC或CV匹配。对于Y,必须执行lookaheads和/或lookbehinds来确定它是否映射到该位置的C或V

可以向您展示我使用的图案,但您可能不会满意我。:)例如:

 (?<= \p{IsVowel} )     [yY] (?= \p{IsVowel} )  # counts as a C
 (?<= \p{IsConsonant} ) [yY]                    # counts as a V
                        [yY] (?= \p{IsVowel} )  # counts as a C

然后你把这些数起来,看看哪一个最长


然而,由于Python支持不像我在自己的程序中使用的那样(默认/直接)支持正则表达式中的属性,这使得首先将字符串预处理为C和V更为重要。否则,您的模式看起来非常难看。

在元音/辅音不均匀的情况下似乎不起作用<例如,代码>连续匹配('hiben')失败。-1:这匹配任何非元音而不是辅音。例如,
conce_re.match('ba7e')
返回一个匹配项。这实际上不起作用。我如何找到具有最连续元音-辅音匹配序列的单词?@Blair-如果你希望输入包含非单词,那么是的,最好对辅音进行硬编码。但是,如果您要与单个单词字符串进行匹配,那么就可以了。@Parseltongue:如果您想找到最匹配的单词,您应该在问题中说明……如何找到具有最连续元音-辅音匹配序列的单词?找到匹配项时,请存储匹配长度。为了将来的参考,你应该尽量不要在提问后改变这个问题。@Katrielex-虽然不幸的是,最初的答案通常有助于澄清海报上的问题,因此问题会有所发展和变化。在解析问题上,我已经让它来回地执行了几十个步骤-参见
 (?= ( (?:  \p{IsConsonant}   \p{IsVowel}     )  )+ ) )