如何只匹配IP而不是字母

时间:2014-05-15 22:14:48

标签: regex

我正在尝试用正则表达式解析错误日志。它会给我我想要的一切,但现在我想省略文本" client",或者那个地方的任何文本。我想要的只是[]之间的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

1 个答案:

答案 0 :(得分:2)

这应该这样做:

^\[([^]]+)\]\s*\[([^]]+)\]\s*\[[a-zA-Z ]*([0-9.]+)\]\s*([A-Za-z ]*)[:]\s*([\/a-z-]*)$

工作正则表达式示例:

http://regex101.com/r/uN3fO3

匹配:(使用您的示例数据..)

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`