【发布时间】:2013-10-20 10:25:44
【问题描述】:
问题
我有这个字符串:
field1=text, CmdSet=[ CmdAV=first CmdArgAV=second CmdArgAV=third CmdArgAV=fourth ], field2=text
是否可以编写一个正则表达式(一行)来捕获匹配组中的以下内容?
first second third fourth
背景
这是来自 Cisco ACS 设备的系统日志事件。 SIEM 解决方案正在接收该事件。这个 SIEM 解决方案允许我们使用正则表达式通过匹配组从日志中“提取”信息。我们通过在输入字段中输入“正则表达式”行来做到这一点。因此,例如,如果我想提取CmdAV 字段的值,我只需执行CmdAV\=(.*?)\sCmdArgAV,并告诉它使用“匹配组1”(无论如何这是唯一的组)。但是,我想在我的问题中提取的“信息”被分散到一个 CmdAV 和几个 CmdArgAV 中。
大声思考,也许可以编写一个正则表达式来匹配CmdAV= 和], field=text 之间的所有内容,然后“删除”CmdArgAV= 的任何实例。
这个 SIEM 解决方案的文档指向这一点:http://docs.oracle.com/javase/tutorial/essential/regex/ 了解更多关于正则表达式的信息,所以我猜它使用 Java。
【问题讨论】: