我有以下字符串:BCRIS-QUEBEC.C67950210QC.5147650116.O5000977510.RD02.0026.00001.DistributionPair.O 在 Hadoop 中,我尝试拉出 RD02 并将其放在 Dist_Cu_Cable 列下。该字符串只是一个示例,RD02 可以是任何文本。我正在使用以下代码,但没有得到想要的结果。谁能帮帮我吗
MAX(
CASE
WHEN lower(associatedwoi_id) LIKE '%distributionpair%'
THEN
CASE
WHEN associatedwoi_id REGEXP '(?i)([^.]+)\.[^.]+\.[^.]+\.DistributionPair\.'
THEN REGEXP_REPLACE(associatedwoi_id, '.*(?i)([^.]+)\.[^.]+\.[^.]+\.DistributionPair\..*', '\\1')
END
END
) AS Dist_Cu_Cable,
听起来这就像 PowerShell 替换,任何匹配的内容都将被替换,即使您将其放在非捕获组中也是如此。因此,您需要通过像这样调整正则表达式来使用向前或向后查找来确保正则表达式仅匹配该特定的文本位:
(?i)([^.]+)(?=\.[^.]+\.[^.]+\.DistributionPair\.)