You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java正则表达式需求:删除IIS日志中除domain\identity外的所有内容

用Apache NiFi+Java正则提取IIS日志中的用户身份信息

需求背景

处理大型IIS日志时,仅需保留domain\identity格式(如test\t123456、test\b213)的用户访问身份,需通过Apache NiFi的替换工具结合Java正则实现,无需编写复杂脚本。

核心实现方案

利用NiFi的ReplaceText处理器,通过正则替换清空日志中除目标捕获组外的所有内容,只保留所需身份信息。

具体配置步骤

  1. 部署ReplaceText处理器
    在NiFi流程中添加ReplaceText处理器,将日志输入源(如GetFile读取日志文件)连接到该处理器。

  2. 配置正则规则

    • Search Value(搜索正则):

      ^.*?([a-z]+\\\\[a-z]\d+).*$
      

      说明:

      • ^.*?:非贪婪匹配行首到目标身份前的所有内容,避免遗漏多个匹配项(若存在)
      • ([a-z]+\\\\[a-z]\d+):捕获组,匹配域名\小写字母+数字格式的身份(若域名包含数字,可调整为[a-z0-9]+)
      • .*$:匹配目标身份到行尾的所有内容
    • Replacement Value(替换内容):

      $1
      

      说明:$1引用正则中第一个捕获组的匹配结果,即需要保留的用户身份信息。

    • 关键参数设置:

      • Replacement Strategy:选择Replace All
      • Evaluation Mode:选择Entire text(确保按行处理单条日志记录)
  3. 测试验证
    用示例日志行测试:

    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 17:30:57