Skip to main content
 首页 » 编程设计

python之使用 re.findall 匹配所有出现的字符串

2025年05月04日52JeffreyZhao

我有一个字符串

a = "123 some_string ABC 456 some_string DEF 789 some_string GHI"

print re.findall("(\d\d\d).*([A-Z]+)", a) 

o/p : [('123', 'I')]

预期 o/p:[('123', 'ABC'), ('456', 'DEF'), ('789', 'GHI')]

因为 .* 它匹配 123 和结束字符 I。 正确的正则表达式是什么,以便打印预期的 o/p?

请您参考如下方法:

虽然 anubhava 的表达式有效,但考虑使用对比原则(108 步与 30 步相比 - 减少了 70% 以上!):

(\d{3})[^A-Z]*([A-Z]+) 

参见 hijacked demo on regex101.com .
懒惰的 dot-star 在性能方面非常昂贵。