Java 流集中的正则表达式
嗨,我想用流集破坏日志文件。日志就像Java 流集中的正则表达式,java,regex,streamsets,Java,Regex,Streamsets,嗨,我想用流集破坏日志文件。日志就像 Deny tcp src dmz:77.77.77.7/61112 dst dmz:55.55.56.57/139 by access-group "outside_access_in" [0x8b3ecfdc, 0x0] 日志中可能还有2个以上的IP,我正在尝试从日志中捕获唯一的第一个和第二个IP地址。据说Streamset使用Java正则表达式模式 到目前为止,我在Streamset中的Expression Evaluator处理器中所做的是 ${st
Deny tcp src dmz:77.77.77.7/61112 dst dmz:55.55.56.57/139 by access-group "outside_access_in" [0x8b3ecfdc, 0x0]
日志中可能还有2个以上的IP,我正在尝试从日志中捕获唯一的第一个和第二个IP地址。据说Streamset使用Java正则表达式模式
到目前为止,我在Streamset中的Expression Evaluator处理器中所做的是
${str:regExCapture(record:value('/Message'),'(\\d+[.]\\d+[.]\\d+[.]\\d+/?\\d*)', 1)}
您知道如何捕获第二个IP吗?您可以使用
${str:regExCapture(record:value('/Message'),'^(?:.*?(\\d+(?:[.]\\d+){3}(?:/\\d+)?)){2}', 1)}
看
详细信息
-字符串的开头^
-连续出现两次(?:.*(\\d+(?:[.]\\d+{3}(?:/\\d+){2}
-除换行符以外的任何0+字符,尽可能少*?
-捕获组1(由于最后一个参数设置为(\\d+(?:[.]\\d+{3}(?:/\\d+))
,其值将由1
返回):str:regExCapture
-1+位\\d+
-三次出现(?:[.]\\d+{3}
和1+位
-可选的(?:/\\d+)
和1+数字序列/
(?:25[0-5]| 2[0-4]\\d[0-1]?\\d?\\d)(?:\\.(25[0-5]| 2[0-4]\\d|[0-1]?\\d?\\d)){3}
,请参阅。因此,您也可以将命令编写为
${str:regExCapture(record:value('/Message'),'^(?:.*?\\b((?:25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}(?:/\\d+)?)){2}', 1)}
看