【发布时间】:2017-09-14 14:45:16
【问题描述】:
我正在尝试编写一个正则表达式来解析我拥有的旧 IRC 日志。
正则表达式:
(\d\d:\d\d)(<)(@|\+)(.+?)>(.*)
日志示例:
= 00:00<@billy> text text text text text text text text text text text text text text text
= 00:03<+tom> text text text text text text
= 00:03<somedude> text text
我已经能够从日志中解析出我需要的所有内容,但频道中没有操作员 (@) 或语音 (+) 状态的用户除外。
因此,当我运行正则表达式时,我得到以下信息:
[('00:00', '<', '@', 'bill', " text text text text text text text text text text text text text text text ")]
[('00:00', '<', '+', 'tom', " text text text text text text ]
[]
因此,缺少“somedude”。有人对如何更好地解决这个问题有任何提示吗?
【问题讨论】:
-
通过添加
?使该组成为可选组。(\d\d:\d\d)(<)([@+]?)(.+?)>(.*)。见regex101.com/r/XJESLT/1。好吧,我想这里有些组是多余的,请随时根据您的需要重新修改模式。 -
看,也许
(\d{2}:\d{2})<([@+]?[^>]*)>(.*)更好? ([^>]可能匹配换行符,[^>\n]*可能会更好) -
@WiktorStribiżew 没有任何建议对我有用。如果有帮助,我正在使用带有
re的 Python 3.0。 -
@WiktorStribiżew 这是我的打字错误。现在效果很好。谢谢。
-
我根据我的第二个建议发布了答案。
标签: regex regex-group