Regex 如何仅匹配ip而不匹配字母

Regex 如何仅匹配ip而不匹配字母,regex,Regex,我正在尝试用正则表达式解析错误日志。它将给我我想要的一切,但现在我想省略文本“客户端”,或任何文本,将在那里。在[]之间,我只需要ip地址 ^\[([^]]+)\]\s*\[([^]]+)\]\s*\[([^]]+)\]\s*([A-Za-z ]*)[:]\s*([\/a-z-]*)$ 这是日志中的一行 [Mon Aug 23 15:25:35 2010] [error] [client 80.154.42.54] File does not exist: /var/www/phpmy-adm

我正在尝试用正则表达式解析错误日志。它将给我我想要的一切,但现在我想省略文本“客户端”,或任何文本,将在那里。在
[]
之间,我只需要ip地址

^\[([^]]+)\]\s*\[([^]]+)\]\s*\[([^]]+)\]\s*([A-Za-z ]*)[:]\s*([\/a-z-]*)$
这是日志中的一行

[Mon Aug 23 15:25:35 2010] [error] [client 80.154.42.54] File does not exist: /var/www/phpmy-admin
这应该做到:

^\[([^]]+)\]\s*\[([^]]+)\]\s*\[[a-zA-Z ]*([0-9.]+)\]\s*([A-Za-z ]*)[:]\s*([\/a-z-]*)$
工作正则表达式示例:

匹配:(使用示例数据…)


你只想要IP吗?或者整行,减去文本“client”?我会说整行减去文本“client”和括号Hanks MElliot。你能告诉我我的逻辑哪里出错了吗?我的印象是,如果您的格式始终一致(例如,使用
[]
作为边缘),我应该能够将IP与类似
[0-9.]
的内容匹配,sweet。否则,这可能是对IP地址更精确的正则表达式匹配:
((?:\d{1,3}\){3}\d{1,3})
@NaN-好吧,您仍然需要匹配文本(客户机),但只需“捕获”(capture)IP地址。像这样:
[a-zA-Z]+([0-9.]+)
。注意
[0-9.]+
周围的排列。啊,我不知道。我的印象是,我可以在弦的任何地方匹配。换句话说,跳过,不匹配我不想要的。很高兴知道,谢谢。@scrowler,谢谢你的指点。看起来我的正则表达式仍然不符合我想要的一切。你能告诉我什么是plz的
?:
1. `Mon Aug 23 15:25:35 2010`
2. `error`
3. `80.154.42.54`
4. `File does not exist`
5. `/var/www/phpmy-admin`