【问题标题】:Apache Nifi - Change Path in Attribute with UpdateAttribute ProcessorApache Nifi - 使用 UpdateAttribute 处理器更改属性路径
【发布时间】:2020-04-28 21:32:47
【问题描述】:

我想使用 UpdateAttribute 处理器更改流文件属性。

属性“文件名”是:

backup/int_backup/storage/teamname/toolname/path/bdsd9d83-dvvv8-41d9-a271-95b2284bd56c/20200420125822_11.zip

字符串的开头应该被剪掉,teamnametoolname 之间应该是另一个名为archive 的文件夹,例如:

teamname/archive/toolname/path/bdsd9d83-dvvv8-41d9-a271-95b2284bd56c/20200420125822_11.zip

我创建了一个识别团队名称的正则表达式:

/[^/]*/[^/]*/([^/]*)/

还有一个在第三个“/”之后标记所有内容的正则表达式:

/[^/]*/[^/]*/[^/]*/([^*]*)

我尝试通过添加来构建字符串:

${filename:replaceAll('/[^/]*/[^/]*/([^/]*)/', '$1')}/archive/${filename:replaceAll('/[^/]*/[^/]*/[^/]*/([^*]*)', '$1')

但是,结果不是正则表达式的结果,而是正则表达式本身。

【问题讨论】:

    标签: regex apache-nifi


    【解决方案1】:

    你可以使用

    ${filename:replaceAll('^(?:[^/]+/){3}([^/]+)(.*)', '$1/archive$2')}
    

    regex demo

    详情

    • ^ - 字符串开头
    • (?:[^/]+/){3} - 除了// 之外,出现三个 1+ 字符
    • ([^/]+) - 第 1 组 ($1):/ 以外的一个或多个字符
    • (.*) - 第 2 组 ($2):字符串的其余部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      • 1970-01-01
      相关资源
      最近更新 更多