【发布时间】:2015-06-10 22:53:37
【问题描述】:
以下是我正在使用的一些数据的示例。我已经阅读了许多涉及此主题的帖子,并在 regex101 上尝试了一段时间。
BotInfo[-]: Source IP:[10.1.1.100] Target Host:[CentOS70-1] Target OS:[CentOS
7.0] Description:[HTTP Connection Request] Details:[10.1.1.101 - - [28/May
/2013:12:24:08 +0000] "GET /math/html.mli HTTP/1.0" 404 3567 "-" "-" ] Phase:
[Access] Service:[WEB]
目标是拥有两个捕获组。一个用于标记(例如源 IP、目标主机、描述等),另一个用于包含在最外面方括号中的内容。
吸引我的是“最外层”,因为 Details 标签的内容中有方括号。
这是我目前在上述正则表达式方面的进展。我正在使用 /g 标志:
\s?([^:]+):\[(.*?(?=\]\s.*?:\[))\]
这可以处理除边缘情况之外的所有事情(它比需要的更复杂,因为我一直在尝试让边缘情况工作)。
我当前的前瞻(\]\s.*?:\[),在高层次上,是匹配结束左括号,然后匹配下一个标签。另一个问题是这在最后一场比赛中失败了,因为没有以下标签。
编辑:请求成功输出的示例。使用提供的数据,目标是让两个捕获组产生这些对:
MATCH 1
1. `Source IP`
2. `10.1.1.100`
MATCH 2
1. `Target Host`
2. `CentOS70-1`
MATCH 3
1. `Target OS`
2. `CentOS 7.0`
MATCH 4
1. `Description`
2. `HTTP Connection Request`
MATCH 5
1. `Details`
2. `10.1.1.101 - - [28/May/2013:12:24:08 +0000] "GET /math/html.mli HTTP/1.0" 404 3567 "-" "-" `
MATCH 6
1. `Phase`
2. `Access`
MATCH 7
1. `Service`
2. `WEB`
【问题讨论】:
-
你能给你的字符串样本部分的预期输出吗?例如
Details:[10.1.1.101 - - [28/May/2013:12:24:08 +0000] "GET /math/html.mli HTTP/1.0" 404 3567 "-" "-" ] -
@Tensibai 是的,我很抱歉,我的意思是详细信息:字段。我会编辑它。