Java/Talend 根据条件分解字符串并清理数据

标签 java talend

我有一个原始数据字符串列表。每个字符串可能包含 Talend 7 中的公司名称 + 压力地址 + 城市 + 省份。它们在字符串中用竖线分隔。

总行数为 200,000。

我想以有效的方式提取和分离公司名称。问题是该管道以公司名称不规则地存在。

以下是每个字符串可以包含的一些示例:

  1. “Mackenzie Health|10 Trench St.|Richmond Hill ON L4C 4Z3”
  2. “”
  3. “健康与保健中心|多伦多大学|214 College Street, Room 111|Toronto ON M5T 2Z9”
  4. “沃尔默路 400 号|125 号套房|多伦多 ON M5P 2X7”
  5. “病童医院|重症医学科|二楼中庭,2830室|555大学大道|多伦多ON M5G 1X8”

我正在考虑使用 tJava 或 tJavaRow,并编写一些 java 代码,使用 contains 方法我可以检查字符串是否包含以下单词之一:Avenue、Ave、Road、Rd、Street 和 St. except if这些词之前有空格。

这是我的问题:找到哪条记录具有街道地址后,我需要知道街道地址之前是否存在任何管道,如果有,有多少?这样我就可以将它们合并为公司名称。

示例:

“Mackenzie Health|10 Trench St.|Richmond Hill ON L4C 4Z3”在街道地址 10 Trench St. 之前只有一根管道,因此公司名称为 麦肯齐健康

“Health and Wellness Center|University of Toronto|214 College Street, Room 111|Toronto ON M5T 2Z9”街道地址前有两个管道,所以公司名称是: 多伦多大学健康与保健中心

“400 Walmer Road|Suite 125|Toronto ON M5P 2X7”前面没有管道,因此没有任何名称

“病童医院|重症医学科|2楼中庭,2830室|555大学大道|多伦多ON M5G 1X8” 在它之前有三个管道,但在子字符串中,在它之前,有词室。所以该公司的名称是病童医院重症医学科。

也欣赏任何想法和/或新解决方案

最佳答案

您可以在 Talend 例程中基于使用捕获组的模式匹配创建 Java 方法(可以在 tMap 组件或其他地方调用)。

https://www.tutorialspoint.com/javaregex/javaregex_capturing_groups.htm

就您而言,您可以使用以下 RegEx 示例(似乎可以解决给出的 5 个示例):

此正则表达式按最后一次出现进行分组(从右开始):

^(.*\|)*((?i).*(room|st.|street|road|avenue).*\|(?-i).*)$

我已经通过 https://regex101.com/ 测试了正则表达式。第 1 组是您的公司名称,第 2 组是您的地址。您可以在进一步处理中删除不需要的管道。

此正则表达式按第一次出现进行分组(从左开始):

^((((?!room|street|st.|road|avenue).)*\|)|)*((?i).*(room|street|st.|road|avenue).*\|(?-i).*)$.

第 2 组和第 4 组现在拥有数据。

注意:所有积分均归Mo2s所有,我只是将他的答案从评论复制到此处,希望对其他人有用。

已修复:正则表达式中存在星号字符问题,与 stackoverflow 标签混淆。

希望对您有用。如果您需要更多帮助,请告诉我。

关于Java/Talend 根据条件分解字符串并清理数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56117725/

相关文章:

java - 一个简单的 Applet 的 Java 控制台中的这种错误

java - 递归 Java 函数调用中的 Try-catch 放置

svn - SVN 中的 Talend 项目

java - 尝试在 Talend 中运行作业时出错(运行时错误)

regex - 如何正则表达式并提取新行直到匹配

java - Talend 的 JSON 解析器

java - URLConnection.getURL 方法

java - Hibernate saveorupdate 或 merge 用于保存/更新一对多关系对象

java - 线程异常,java.lang.NullPointerException

hadoop - HDFS和HBase:它是如何工作的?