gpt4 book ai didi

python - 使用 re.finditer 和 re.match 时的不同行为

转载 作者:太空宇宙 更新时间:2023-11-04 11:01:51 29 4
gpt4 key购买 nike

我正在研究一个正则表达式,以通过一些脚本从页面收集一些值。我在条件中使用 re.match 但它返回 false 但如果我使用 finditer 它返回 true 并执行条件主体。我在自己构建的测试器中测试了该正则表达式,它在那里工作但不在脚本中。这是示例脚本。

result = []
RE_Add0 = re.compile("\d{5}(?:(?:-| |)\d{4})?", re.IGNORECASE)
each = ''Expiration Date:\n05/31/1996\nBusiness Address: 23901 CALABASAS ROAD #2000 CALABASAS, CA 91302\n'
if RE_Add0.match(each):
result0 = RE_Add0.match(each).group(0)
print result0
if len(result0) < 100:
result.append(result0)
else:
print 'Address ignore'
else:
None

最佳答案

re.finditer() 返回一个迭代器对象,即使没有匹配(所以 if RE_Add0.finditer(each) 总是返回 True)。您必须实际遍历对象以查看是否存在实际匹配项。

然后,re.match() 只匹配字符串的开头,而不是像 re.search()re 那样匹配字符串中的任何地方。 finditer() 做。

第三,该正则表达式可以写成 r"\d{5}(?:[ -]?\d{4})"

第四,始终使用带正则表达式的原始字符串。

关于python - 使用 re.finditer 和 re.match 时的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4646904/

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