我正在尝试解析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
。我如何解析只有伪?
答案 0 :(得分:2)
您需要向.*
量词添加?
,以使*
非贪婪:
re.search('%s(.*?)%s' % ('<', '>'), s).group(1)
现在.
匹配满足模式的最小字符数,而不是默认最大值。
不知道为什么你在这里使用字符串插值;对于静态字符,只需使用:
re.search('<(.*?)>', s).group(1)
您还可以捕获与结束字符不匹配的所有字符:
re.search('<([^>]*)>', s).group(1)
此处[^>]
形成一个字符类,匹配类中不的任何字符;所以任何不是>
的角色都有资格。