試圖在Python中學習正則表達式以查找具有連續元音輔音或輔音元音組合的單詞。我如何在正則表達式中做到這一點?如果無法在Regex中完成,是否有一種在Python中執行此操作的有效方法?Python中的正則表達式可用於查找符合下列模式的單詞:元音,輔音,元音,輔音
回答
我相信你應該能夠使用正則表達式是這樣的:
r"([aeiou][bcdfghjklmnpqrstvwxz])+"
緊隨其後的是輔音元音和匹配:
r"([bcdfghjklmnpqrstvwxz][aeiou])+"
爲匹配輔音,然後是元音。作爲參考,+意味着它將匹配它可以找到的這種模式的最大重複。例如,將第一個模式應用於「ababab」會返回整個字符串,而不是「ab」的單個出現。
如果你想匹配一個或多個元音後面有一個或多個輔音它可能是這樣的:
r"([aeiou]+[bcdfghjklmnpqrstvwxz]+)+"
希望這有助於。
^(([aeiou][^aeiou])+|([^aeiou][aeiou])+)$
>>> import re
>>> consec_re = re.compile(r'^(([aeiou][^aeiou])+|([^aeiou][aeiou])+)$')
>>> consec_re.match('bale')
<_sre.SRE_Match object at 0x01DBD1D0>
>>> consec_re.match('bail')
>>>
完美運作。謝謝 – Parseltongue 2011-05-21 06:39:53
當有不均勻的元音/輔音時,似乎不起作用。 'consec_re.match('hiben')'例如失敗。 – 2011-05-21 06:49:48
-1:這匹配任何非元音而不是輔音。例如,''consec_re.match('ba7e')''返回一個匹配。 – Blair 2011-05-21 06:59:26
如果您將輔音有向圖映射爲單個輔音,則最長的詞是anatomicopathological作爲10 * VC字符串。
如果你正確地映射Ÿ,那麼你得到完整的串像乙酰丙酮爲8 * VC和hypocotyledonary爲8 * CV。
如果您不需要字符串是整體,你在chemicomineralogical得到一個9 * CV模式和overimaginativeness一個9 * VC模式。
如果連續輔音或元音運行允許交替使用,則有許多10 *字,如(C+V+)+
。這些包括laparocolpohysterotomy和ureterocystanastomosis。
主要技巧是首先映射所有輔音到C和所有元音到V,然後進行VC或CV匹配。對於Y,你必須做前視和/或後視以確定它是否映射到該位置的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
主要的竅門就變成了尋找通過
(?= ((?: \p{IsVowel} \p{IsConsonant}) )+))
和
(?= ((?: \p{IsConsonant} \p{IsVowel} ) )+))
重疊的VC或CV交替的比賽之一,那麼你算上所有這些了並查看哪些是最長的。
然而,由於支持Python沒有(默認/直接)在正則表達式的支持性我只是用他們自己的程序的方式,這使得它更重要的是首先預處理串入不過Ç的和V's。否則你的模式看起來很醜。
- 1. 輔音和元音的Python正則表達式
- 2. perl正則表達式匹配元音和輔音
- 3. 做一個元音和輔音模式的所有可能的單詞列表
- 4. Python正則表達式匹配帶重複輔音的單詞
- 5. 雙輔音的正則表達式
- 6. 正則表達式的字符串以兩個元音和三個輔音
- 7. 正則表達式爲多個輔音
- 8. 正則表達式以匹配輔音
- 9. 在Python中檢測元音與輔音
- 10. 在Python中加入輔音和元音
- 11. 計數元音和輔音
- 12. 計數元音與輔音
- 13. 分離元音和輔音
- 14. 元音和輔音Java
- 15. Python:評估一個輔音或元音
- 16. 計數元音和輔音字符串
- 17. 如何用正則表達式找到輔音羣集?
- 18. jflex中的元音正則表達式
- 19. 元音字母邊界處的元音正則表達式
- 20. 檢查,如果一個詞以元音開頭或輔音
- 21. 計數元音其次是輔音
- 22. 計算字符串中的元音和輔音的數量
- 23. 跳過下一元音和輔音在一個字符串
- 24. 計算文件中的元音和輔音(Python)
- 25. 如何獲得輔音重複,但不是Python中的元音
- 26. 如何簡單的加法組合元音每個輔音使用Python
- 27. 這是最短的JavaScript正則表達式來查找所有大寫輔音?
- 28. 如何在Python中交換元音和輔音
- 29. 使用正則表達式查找連續元音
- 30. 語音識別:檢測日語假名(輔音+元音)
我如何找到具有最連續的元音 - 輔音匹配序列的單詞? – Parseltongue 2011-05-21 07:27:11
當你找到它時,存儲匹配的長度。爲了將來的參考,你應該在提問後儘量不要改變這個問題。 – katrielalex 2011-05-21 08:44:56
@katrielalex - 雖然不幸,但最初的答案很有助於澄清海報的問題,所以這個問題會隨着發展而變化。在解析問題時,我已經有了幾十個步驟 - 請參閱http://www.python-forum.org/pythonforum/viewtopic.php?f=3&t=25288&start=80&sid=466b3473819c36063b68f10d580a4e7c – PaulMcG 2011-05-21 14:41:31