我正在尝试通过正则表达式捕获文本并用自定义字符串替换文本。
我当前的代码成功捕获了 IP 地址,但我不知道如何将 IP 地址替换为自定义文本以及消息的其余部分:
$Template privateIP,"%TIMESTAMP% %HOSTNAME% %syslogtag% %msg:R,ERE,0,DFLT:([0-9]{1,3}\.){3}[0-9]{1,3}--end%\n"
我的第一个想法是以某种方式将正则表达式移出模板(即使用一些 RainerScript)并创建一个modded_msg
设置为已修改msg
属性的新字段/变量。然后%modded_msg%
在 $Template 中使用。
我已经尝试了多次(感谢 ChatGPT),但无法正常工作。
下面的示例可以检查 IP 地址的 msg 属性,然后根据地址用某个字符串替换消息中所有出现的它。
re_extract()
在属性中查找正则表达式。请注意额外的内容()
,以便我们可以提取捕获组 1,即整个匹配项。此外,\
是双倍的。最后一个参数为0,失败返回。返回的字符串保存在局部变量中$.myip
。replace()
替换属性中所有出现的字符串,并在另一个局部变量中返回结果。模板使用这个局部变量。