gpt4 book ai didi

python - 为什么这个正则表达式不匹配第二个二进制间隙?

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

尝试解决所列问题 here在 python 中,我想我会尝试一个不错的小正则表达式来捕获最大的“二进制间隙”(数字的二进制表示中的零链)。

我为这个问题写的函数如下:

def solution(N):
max_gap = 0
binary_N = format(N, 'b')
list = re.findall(r'1(0+)1', binary_N)

for element in list:
if len(element) > max_gap:
max_gap = len(element)

return max_gap

而且效果很好。但是...出于某种原因,它与 10000010000000001(66561 的二进制表示)中的第二组零不匹配。 9 个零没有出现在匹配列表中,所以它一定是正则表达式的问题 - 但我看不到它在哪里,因为它与给定的所有其他示例匹配!

最佳答案

同一位不能包含在两个匹配项中。您的正则表达式匹配 1 后跟一个或多个 0 并以另一个 1 结尾。一旦找到第一个匹配项,您就会得到 0000000001,它不是以 1 开头,因此与您的正则表达式不匹配。

如@JoachimIsaksson 所述,如果要匹配两组 0,可以使用 lookahead这样最后的 1 被检查但不包含在匹配中。 r'1(0+)(?=1)'

关于python - 为什么这个正则表达式不匹配第二个二进制间隙?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35013096/

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