python - 如何从字符串中找到不重复的单词?
问题描述
一个词有元音字母和辅音。
不应该有两个元音在一起
不应该有两个 Cosants 在一起
“z”是该规则的一个例外。z 可以一起重复
例如,"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 中使用这个正则表达式,有 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']
推荐阅读
- python - 如何以自定义样式更改 tkk 滚动条的宽度?
- swift - 斯威夫特:你如何正确地从选择性日期组件中实例化日期?
- lua - 从 python 到 lua 的翻译错误。我的错误在哪里?
- android - 如何使弹出视图内的线性布局响应?
- webdriver-io - 使用 webdriverio 和 browserstack javascript 在真实设备上上传 safari 中的图片
- javascript - 表设置值制作电子表格的副本
- optimization - What is maximum number of equality constraints in Scipy's SLSQP algorithm?
- python - Rename multiple .docx files in a folder using a script task
- python - Generating formated flat file
- c - segmentation fault (core dumped) - unable to findout where ive failed