我有一个字符串
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 在性能方面非常昂贵。
关于python - 使用 re.findall 匹配所有出现的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39083539/