0

我正在尝试解析 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。我怎样才能解析只有伪?

4

1 回答 1

2

您需要通过在量词中添加 a来使.* 非贪婪:?*

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

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

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

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

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

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

这里[^>]形成一个匹配任何不在该类中的字符的字符类;所以任何不是的字符>都符合条件。

于 2013-11-08T15:18:18.813 回答