【发布时间】:2022-06-10 19:58:11
【问题描述】:
我正在准备考试,任务如下:
给定一个由英文大写字母组成的字符串,找出其中不包含QW或WQ的最长子字符串。
我知道我可以做到re.split 或类似的事情,但我让我遇到了一个挑战,用像len(max(re.findall(...), key=len)) 这样的“正则表达式匹配” 表达式来做到这一点没有 使用split 或其他方法。有没有可能?
为了找到 所有 个匹配的子字符串,我尝试了这个:
list(map(lambda x: x[0], re.findall(r'(((?<!QW|WQ).)+(?!QW|WQ))', text))
但是这个确实匹配一个以WQ结束结束的子字符串,例如。我该如何解决这个问题?
【问题讨论】:
-
您可以使用 finditer 代替 findall 并在匹配对象中引用适当的组。