【发布时间】:2019-09-22 23:51:44
【问题描述】:
我有一个大文本文件,其中包含类似于以下行的行:
timestamp = foo bar baz
timestamp = foo bar
timestamp = foo
我试图编写一个匹配 foo 的正则表达式,但如果 bar 和 baz 都存在,它也匹配那些。
r"= (.*) (.*)? (.*)?"
但它只匹配foo bar baz 字符串,而不匹配其他两个。如何使正则表达式与可选项匹配?
【问题讨论】:
-
像
= *(\S+)(?: *(\S+))?(?: *(\S+))?这样的东西对你有用。见the regex demo。 -
唯一的小问题是它与
foo bar案例的 = 匹配 - 不确定为什么:) -
@CaseyJones 添加积极的后视 (?
-
if line.endwith('foo') ...??? -
@CaseyJones 匹配
=有什么问题?我知道您只对捕获的子字符串感兴趣。