【问题标题】:python simple regex helppython简单正则表达式帮助
【发布时间】:2011-05-10 07:54:28
【问题描述】:

您好,这里是第一次使用正则表达式的用户。 只是想弄清楚一些正则表达式,但需要一些帮助。

我有一个包含以下项目的文本文件:

10:67 12:12 01:50 23:60 23:50

我正在尝试获取有效时间列表,以便 输出应该是:

['12:12', '01:50', '23:50']

这是我的代码:

import re
inFile = open("text.txt")
text = inFile.read()
pattern = re.findall('([01]\d|2[0-3]):[0-5]\d', text)
print pattern

我的输出是:

['12', '01', '23']

任何帮助找出什么问题?谢谢!!!

【问题讨论】:

标签: python regex


【解决方案1】:

Python 显然只打印第一组(在您的情况下是 ([01]\d|2[0-3]))。如果您将其设为非捕获组 ((?: ... )),您应该会看到所需的结果:

text = '10:67 12:12 01:50 23:60 23:50'
pattern = re.findall('(?:[01]\d|2[0-3]):[0-5]\d', text)
print pattern

显示:

['12:12', '01:50', '23:50']

关于(非)捕获组的更多信息:http://www.regular-expressions.info/brackets.html

【讨论】:

  • 实际上,findall() 返回所有组,或者,如果没有组,则返回整个匹配项(要看到这一点,请在原始表达式的分钟周围添加第二组,Python 将返回一个元组) .但是,使小组不被捕获是正确的答案。
  • @Blair,我已经在 Python 文档中寻找解释以找出确切的行为。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多