Regex 用于从绝对路径提取文件夹名称的正则表达式(Linux)

Regex 用于从绝对路径提取文件夹名称的正则表达式(Linux),regex,apache-nifi,regexp-replace,Regex,Apache Nifi,Regexp Replace,我在ApacheNIFI中使用regex函数在文件路径中查找文件夹名,但它似乎没有给出正确的结果 我想从这个文件路径用两个不同的正则表达式解析出“state”和“date” /upload/main/state/0202021/ 这是我用的正则表达式 ${“absolute.path”:replaceFirst(.[/\\\\]{1}([a-zA-Z]+)[/\\\\]{1}(\d{8})。?$”,“$1”)} ${“absolute.path”:replaceFirst(.*(\d{8})。+

我在ApacheNIFI中使用regex函数在文件路径中查找文件夹名,但它似乎没有给出正确的结果

我想从这个文件路径用两个不同的正则表达式解析出“state”和“date”

/upload/main/state/0202021/

这是我用的正则表达式

${“absolute.path”:replaceFirst(.[/\\\\]{1}([a-zA-Z]+)[/\\\\]{1}(\d{8})。?$”,“$1”)}

${“absolute.path”:replaceFirst(.*(\d{8})。+$,“$1”)}

如果出现的内容总是在同一个位置,我会使用这两个表达式:

    对于最后位置的日期<代码>(?< P>)可以考虑使用< /P>
    state=${“absolute.path”:replaceFirst(.[/\\\]+)[/\\\\]\\d{8}[/\\\]?$,“$1”)}
    日期=${“absolute.path”:replaceFirst(.[/\\\\](\\d{8})[\\\/]?$,“$1”)}
    
    见和

    重点是

  • 确保正则表达式与整个输入字符串匹配
  • 确保创建正则转义的每个反斜杠(如
    \d
    \\
    )也被转义
  • 在要提取的匹配部分周围加上括号
  • 在替换件中使用
    $1
    提取该零件
  • 以下是第一个模式描述:

    • *
      -除换行符以外的任何零个或多个字符,尽可能多
    • [/\\]
      -a
      /
      \
      字符
    • (\d{8})
      -捕获组(在替换模式中的
      $1
      的帮助下参考):八位数字
    • [\\\/]?
      -可选的
      /
      \
      字符
    • $
      -字符串结束

    如果您只对获取值感兴趣,而对方法不感兴趣,请尝试下面的方法

    state = ${absolute.path:getDelimitedField(4, '/')}
    date  = ${absolute.path:getDelimitedField(5, '/')}
    
    提及-