亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

流集中的正則表達式

流集中的正則表達式

呼啦一陣風 2021-10-28 14:24:38
我想使用 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 地址。據記載,Streamsets 使用 Java REGEX 模式。到目前為止,我在 Streamsets 的 Expression Evaluator 處理器中所做的是,${str:regExCapture(record:value('/Message'),'(\\d+[.]\\d+[.]\\d+[.]\\d+/?\\d*)', 1)}知道如何捕獲第二個 IP 嗎?
查看完整描述

1 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

您可以使用

${str:regExCapture(record:value('/Message'),'^(?:.*?(\\d+(?:[.]\\d+){3}(?:/\\d+)?)){2}', 1)}

請參閱正則表達式演示。

細節

  • ^ - 字符串的開始

  • (?:.*?(\\d+(?:[.]\\d+){3}(?:/\\d+)?)){2} - 連續兩次出現

    • \\d+ - 1+ 位數字

    • (?:[.]\\d+){3}- 出現 3 次.和 1+ 位數字

    • (?:/\\d+)?-/和 1+ 數字的可選序列。

    • .*? - 除換行符以外的任何 0+ 個字符,盡可能少

    • (\\d+(?:[.]\\d+){3}(?:/\\d+)?)- 捕獲組 1(它的值將被返回,str:regExCapture因為最后一個參數被設置為1):

由于在一次匹配操作中捕獲多次出現時,組中的內容會被重寫,因此組 1 將僅包含第二個 IP 值。

請注意,更好(更安全、更精確)的 IP 模式是(?:25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(?:\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3},請參閱使用正則表達式從字符串中提取 ip 地址。所以,你也可以把命令寫成

 ${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)}

請參閱另一個正則表達式演示。


查看完整回答
反對 回復 2021-10-28
  • 1 回答
  • 0 關注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號