gpt4 book ai didi

python - 模式的一部分是可选的正则表达式。

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:36 24 4
gpt4 key购买 nike

我正在开发一个填字游戏编译器。

例如,假设有 8 个空白点,第二个点为“U”,第四个点为“E”,第六个点为“E”。

_U_E_E___

我有一个单词列表,我试图从中获取匹配的单词。如果我找到一个带有这种模式的 8 个字母的单词(TUBELESS),太棒了!但是,如果我能找到一个只匹配前 4 个槽 (TUBE) 的 4 个字母的单词,我也可以使用它。

我可以为每个可能的长度设置一个 RE,然后使用“|”组合它们但我正在寻找更优雅的解决方案。帮助?

最佳答案

使用嵌套可选组:.U.E(?:.(?:E(?:..?)?)?)?$

您可以使用一个简单的递归函数来构建模式:(几乎相同的模式,但即使是最后一个字符也被包裹在一个组中)

def nested_pattern(s):
if s:
return '(?:' + s[0] + nested_pattern(s[1:]) + ')?'
else:
return ''

import re
regex = re.compile(r'.U.E' + nested_pattern(r'.E..') + '$')

for word in ('TUB', 'TUBE', 'TEBU', 'TUBES', 'PURETE', 'TUBELEX', 'TUBELESS', 'SURELY'):
print word, bool(regex.match(word))

打印

TUB False
TUBE True
TEBU False
TUBES True
PURETE True
TUBELEX True
TUBELESS True
SURELY False

关于python - 模式的一部分是可选的正则表达式。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19557668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com