我正在尝试解析 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
。我怎样才能解析只有伪?
您需要通过在量词中添加 a来使.*
非贪婪:?
*
re.search('%s(.*?)%s' % ('<', '>'), s).group(1)
现在.
匹配满足模式的最小字符数,而不是默认的最大值。
不过,不知道为什么在这里使用字符串插值;对于静态字符,只需使用:
re.search('<(.*?)>', s).group(1)
您还可以捕获与结束字符不匹配的所有字符:
re.search('<([^>]*)>', s).group(1)
这里[^>]
形成一个匹配任何不在该类中的字符的字符类;所以任何不是的字符>
都符合条件。