首页 > 解决方案 > 如何从字符串中找到不重复的单词?

问题描述

一个词有元音字母和辅音。

例如,"man" 为 True,"king","horse" 为 False,"zzzz" 为 True

代码

input_str1 = 'man'
input_str2 = 'king'
input_str3 = 'zzzz'
input_str4 = 'horse'
test_list = [chr(x) for x in range(ord('a'), ord('z') + 1)] 
vowels = ['a','e','i','o','u']

test_list 有完整的字母

标签: python

解决方案


你可以在 python 中使用这个正则表达式,有 2 个负前瞻:

^(?i)(?!.*[aeiou]{2})(?!.*[^aeiouz]{2})[a-z]+$

正则表达式演示

正则表达式详细信息

  • ^: 开始
  • (?i): 启用大小写忽略匹配
  • (?!.*[aeiou]{2}): 如果我们有 2 个元音,则负前瞻使匹配失败
  • (?!.*[^aeiouz]{2}): 如果我们有 2 个辅音在一起,则负前瞻使匹配失败
  • [a-z]+: 匹配 1+ 个英文字母
  • $: 结尾

在 Python 中使用:

>>> import re
>>> rx = re.compile(r'^(?!.*[aeiou]{2})(?!.*[^aeiouz]{2})[a-z]+$', re.I)
>>> arr = ['man', 'king', 'horse', 'zzzz']
>>> [s for s in arr if rx.search(s)]
['man', 'zzzz']

推荐阅读