我的作业有一个来自 xml 文件的无限制列,该列的长度可以超过 4000 个字符,但是,这是 Oracle varchar 列的最大长度。我需要能够使用 Talend 中的 tExtractRegexFields
组件将每 3000-4000 个字符的列分隔到一个单独的列中。
但是,我不擅长正则表达式,遇到了一些麻烦。
文本的格式一般是这样的:
"<p>#Principal Responsibilities: </p>
<p>INSERT EXTREMELY LONG DESCRIPTION HERE</p>"
我试过用这样的东西:
"([a-zA-Z0-9]{0,4000})"
但我运气不好,它只捕获了 1 个单词。
作业是这样设置的:
tFileInputXML------>tExtractRegexFields----->tMap------tOracleOutput
我知道我缺少的是一些简单的东西,但我就是想不通是什么!
最佳答案
您需要捕获的不仅仅是字母数字字符。试试“([.]{0,4000})”,假设 Talend 接受句号表示任何字符,那应该可以为您提供所有信息。 或者,您可以接受“([a-zA-Z0-9 ]{0, 4000})”(注意空格),这应该让您得到不止一个单词,但在第一个标点符号之后可能什么也没有。
关于java - tExtractJsonFields Talend,使用正则表达式按长度将列分成多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25328589/