两个子串之间的Tinier字符串

时间:2013-11-08 15:17:09

标签: python regex

我正在尝试解析IRC日志,如下所示:

2013-09-26T01:52:40  <Shan-x> some stuff

我想要伪,所以我使用re

re.search('%s(.*)%s' % ('<', '>'), s).group(1)

但如果日志是这样的:

2013-09-26T01:52:40  <Shan-x> some stuff > foo bar

然后,我得到了这个:Shan-x> some stuff。我如何解析只有伪?

1 个答案:

答案 0 :(得分:2)

您需要向.*量词添加?,以使* 非贪婪

re.search('%s(.*?)%s' % ('<', '>'), s).group(1)

现在.匹配满足模式的最小字符数,而不是默认最大值。

不知道为什么你在这里使用字符串插值;对于静态字符,只需使用:

re.search('<(.*?)>', s).group(1)

您还可以捕获与结束字符不匹配的所有字符:

re.search('<([^>]*)>', s).group(1)

此处[^>]形成一个字符类,匹配类中的任何字符;所以任何不是>的角色都有资格。