Python 使用正则表达式提取IRC日志中的用户名?

Python 使用正则表达式提取IRC日志中的用户名?,python,regex,chat,irc,Python,Regex,Chat,Irc,我正在尽可能地学习编程,我从Python开始。我目前正在编写一个IRC统计生成器(好像还没有足够的统计生成器),我正在尝试用一个正则表达式来匹配特定日志格式中的用户名(并且只匹配用户名)。但是,我的与re.search不匹配 以下是日志格式的示例: may 01 14:04:54 <FishCream> Wahoo! may 01 14:05:01 <LpSamuelm> Oh, if only talking was this fun in real life. jan

我正在尽可能地学习编程,我从Python开始。我目前正在编写一个IRC统计生成器(好像还没有足够的统计生成器),我正在尝试用一个正则表达式来匹配特定日志格式中的用户名(并且只匹配用户名)。但是,我的与re.search不匹配

以下是日志格式的示例:

may 01 14:04:54 <FishCream> Wahoo!
may 01 14:05:01 <LpSamuelm> Oh, if only talking was this fun in real life.
jan 01 00:00:00 <Username>  Message goes here.
jan 01 00:00:00 *   Username Action goes here.
may 01 14:04:54哇!
5月1日14:05:01哦,如果在现实生活中谈话是一种乐趣就好了。
一月一日00:00:00消息传到这里。
jan 01 00:00:00*此处显示用户名操作。
以下是编译语句:

findusername = re.compile("^[a-zA-Z]+\s[0-9]+\s[0-9:]\s<([A-Za-z]+)>")
finduseraction = re.compile("^[a-zA-Z]+\s[0-9]+\s[0-9:]\s\*\s+([A-Za-z]+)\s")
findusername=re.compile(“^[a-zA-Z]+\s[0-9]+\s[0-9:][\s”)
finduseraction=re.compile(“^[a-zA-Z]+\s[0-9]+\s[0-9:][s\*\s+([a-zA-Z]+)\s”)
正如您所看到的,我已经做了两个单独的语句,用于在用户说话和使用/me命令时查找用户名-为这两个命令创建一个超级正则表达式可能是可能的,但我已经够头疼的了


有人能帮我找出这个问题吗?

你的
[0-9:][/code>类只匹配一个字符,而不是其中的8个字符;添加一个量词:

findusername = re.compile("^[a-zA-Z]+\s[0-9]+\s[0-9:]{8}\s<([A-Za-z]+)>")
finduseraction = re.compile("^[a-zA-Z]+\s[0-9]+\s[0-9:]{8}\s\*\s+([A-Za-z]+)\s")

哇,真不敢相信我没听清楚。非常感谢你!顺便说一句,您还帮助我学习了集合量词的语法,我并不熟悉。
>>> findusername = re.compile("^[a-zA-Z]+\s[0-9]+\s[0-9:]{8}\s<([A-Za-z]+)>", re.MULTILINE)
>>> finduseraction = re.compile("^[a-zA-Z]+\s[0-9]+\s[0-9:]{8}\s\*\s+([A-Za-z]+)\s", re.MULTILINE)
>>> findusername.findall(logs)
['FishCream', 'LpSamuelm', 'Username']
>>> finduseraction.findall(logs)
['Username']