Java正则表达式需求:删除IIS日志中除domain\identity外的所有内容
用Apache NiFi+Java正则提取IIS日志中的用户身份信息
需求背景
处理大型IIS日志时,仅需保留domain\identity格式(如test\t123456、test\b213)的用户访问身份,需通过Apache NiFi的替换工具结合Java正则实现,无需编写复杂脚本。
核心实现方案
利用NiFi的ReplaceText处理器,通过正则替换清空日志中除目标捕获组外的所有内容,只保留所需身份信息。
具体配置步骤
部署ReplaceText处理器
在NiFi流程中添加ReplaceText处理器,将日志输入源(如GetFile读取日志文件)连接到该处理器。配置正则规则
Search Value(搜索正则):
^.*?([a-z]+\\\\[a-z]\d+).*$说明:
^.*?:非贪婪匹配行首到目标身份前的所有内容,避免遗漏多个匹配项(若存在)([a-z]+\\\\[a-z]\d+):捕获组,匹配域名\小写字母+数字格式的身份(若域名包含数字,可调整为[a-z0-9]+).*$:匹配目标身份到行尾的所有内容
Replacement Value(替换内容):
$1说明:
$1引用正则中第一个捕获组的匹配结果,即需要保留的用户身份信息。关键参数设置:
Replacement Strategy:选择Replace AllEvaluation Mode:选择Entire text(确保按行处理单条日志记录)
测试验证
用示例日志行测试:testingtesting123 test\t12345 512.1235.212.321 Apples+Test/9.9.9+(Product:+129+10.492.29) - 400 testing testing123
处理后输出结果:test\t12345
扩展说明
- 若单条日志可能存在多个符合格式的身份信息,可调整正则为:
替换内容设为^.*?([a-z]+\\\\[a-z]\d+)(?:.*?([a-z]+\\\\[a-z]\d+))*.*$$1,$2(用逗号分隔多个结果,按需调整分隔符)。 - 若域名是固定值(如
test),可将正则中的[a-z]+替换为具体域名,如test\\\\[a-z]\d+。
内容的提问来源于stack exchange,提问作者BM100
相关产品推荐
相关产品推荐

