正则表达式提取逗号分隔值?

时间:2018-04-09 07:58:39

标签: regex minify apache-nifi hortonworks-data-platform hortonworks-dataflow

我正在尝试从csv文件读取值,然后使用ExtractText处理器将值存储到属性中。该文件只包含一行,其中有5个值以逗号分隔。这是我的文件的内容:

jdbc:mysql://localhost:3306/test, com.mysql.jdbc.Driver, C:\ProgramFiles\MySQL\mysql-connector.jar, root, root 

我在ExtractText处理器中手动添加了5个属性: -

DatabaseConnectionURL
DatabaseDriverClass
DatabaseDriverLocation
DatabaseUser
Password

现在,我想要在ExtractText处理器中定义的上述5个属性的正则表达式,以便它们获得以下值: -

DatabaseConnectionURL = jdbc:mysql://localhost:3306/test
DatabaseDriverClass = com.mysql.jdbc.Driver
DatabaseDriverLocation = C:\Program Files\MySQL\mysql-connector.jar
DatabaseUser = root
Password = root

您能否为我提供上述5个属性的正则表达式?

1 个答案:

答案 0 :(得分:3)

Rishab,

使用以下正则表达式的ExtractText处理器来捕获行。

ExtractedData:(^.*$)

然后将updateAttribute与getDelimitedField()表达式一起使用,如下所示,为流文件属性赋值。

DatabaseConnectionURL:${ExtractedData:getDelimitedField(1)}

DatabaseDriverClass:${ExtractedData:getDelimitedField(2)}

DatabaseDriverLocation:${ExtractedData:getDelimitedField(3)}

DatabaseUser:${ExtractedData:getDelimitedField(4)}

Password:${ExtractedData:getDelimitedField(5)}

getDelimitedField()“将主题解析为分隔的文本行,并返回该分隔文本中的单个字段。”并且可以在支持NiFi表达式语言的任何配置属性上使用。有关getDelimitedField()详细说明,请查看NiFi表达语言指南。

https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html#getdelimitedfield

希望此解决方案有助于解决您的问题。

不要忘记接受是否有效,如果您遇到任何问题,请告诉我。

相关问题