如何编写正则表达式提取逗号分隔值?NiFi ExtractText处理器求助
解决NiFi ExtractText提取CSV单行数据到属性的问题
嘿,针对你这个从单行CSV提取5个字段到指定属性的需求,我给你准备了每个属性对应的正则表达式,直接就能用:
每个属性对应的正则表达式
- DatabaseConnectionURL:
^([^,]+)- 解释:从行开头开始,捕获第一个逗号之前的所有内容,正好对应你的数据库连接URL。
- DatabaseDriverClass:
^[^,]*,([^,]+)- 解释:先跳过第一个字段和后面的逗号,然后捕获第二个逗号之前的内容,也就是驱动类名。
- DatabaseDriverLocation:
^[^,]*,[^,]*,([^,]+)- 解释:跳过前两个字段及对应的逗号,捕获第三个字段(驱动jar的路径),这个正则会自动处理路径里的反斜杠和特殊字符,只要路径里没有逗号就没问题。
- DatabaseUser:
^[^,]*,[^,]*,[^,]*,([^,]+)- 解释:跳过前三个字段和逗号,捕获第四个字段(数据库用户名)。
- Password:
^[^,]*,[^,]*,[^,]*,[^,]*,([^,]+)$- 解释:跳过前四个字段和逗号,捕获行结尾前的所有内容,也就是密码。
额外注意事项
- 确保你的ExtractText处理器的**“匹配策略”**设置为
提取第一个匹配项(因为每个正则只会匹配一次,对应唯一的字段)。 - 因为你的CSV只有一行数据,不需要处理多行的情况,这些正则刚好适配单行场景。
- 如果后续字段里可能出现逗号(比如密码里有逗号),那就要用更复杂的CSV解析正则,但根据你提供的内容,当前的正则完全够用。
内容的提问来源于stack exchange,提问作者Rishab Prasad
相关产品推荐
相关产品推荐

