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

标签 python regex

我有一个字符串

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/

相关文章:

python - Python 中的正则表达式 : Separate words from numbers JUST when not in list

php - 使用 php 正则表达式解析 block

python - 如何使用 boto3 在 EC2 中通过 SSH 和运行命令?

python - Python 中的 N 维线性插值(使用基本原理索引评估数组)

python - 如何使用 Google calendar api python 查找两个事件之间的时差

regex - 如何按符号和字母拆分

python - 如何克服 SVM 内存需求

python - 在文本文件中使用正则表达式重新格式化日期时间值

Ruby 正则表达式提取 { | 之间的单词| }

Python:需要解析帮助!