我有一个字符串
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?
答案 0 :(得分:3)
虽然anubhava的表达有效,但请考虑使用对比原理(108步与30步相比 - 减少70%以上!):
(\d{3})[^A-Z]*([A-Z]+)
请参阅hijacked demo on regex101.com 懒惰的圆点星在性能方面非常昂贵。
答案 1 :(得分:2)