如果字符串中的逗号是Amount的一部分,我需要替换逗号,并保持其余字符不变。
之前:“ AAAA, 095,3美元,一切都很好,5324,agx3,xxyy 24 yz”
之后:“ AAAA, 0953美元,一切都很好,5324,agx3,xxyy 24 yz”
用作字符串之间分隔符的逗号必须保留,并可以用某些东西替换以便于识别。 (我使用管道作为分隔器)
我在下面尝试过,但需要建议对其进行纠正:
select regexp_replace('AAAA, **0953 USD**, ALL IS good ,5324, agx3, xxyy 24 yz','[^a-zA-Z0-9]+','|');
结果
AAAA|0953|USD|ALL|IS|good|5324|agx3|xxyy|24|yz
需要:
AAAA|0953 USD|ALL IS good|5324|agx3|xxyy 24|yz
答案 0 :(得分:0)
如果支持环视,则可以使用:
(?<=\d),(?=\d)
答案 1 :(得分:0)
基于Oracle's syntax for REGEXP_REPLACE和一些测试here,我认为这可能会满足您的要求:
REGEXP_REPLACE( 'AAAA, 095,3 USD, ALL IS good ,5324, agx3, xxyy 24 yz',
'([0-9]+),([0-9]+) USD',
'\1\2 USD' )
OP指示数据库为Impala。根据OP的发现,正确的语法为:
REGEXP_REPLACE( 'AAAA, 095,3 USD, ALL IS good ,5324, agx3, xxyy 24 yz',
'([0-9]+),([0-9]+) USD',
'\\1\\2 USD' )
有关上下文,请参见下面的评论。
答案 2 :(得分:0)
选择REGEXP_REPLACE('AAAA,095,3 USD,ALL IS good,5324,agx3,xxyy 24 yz','([[0-9] +),([0-9] +)','\ 1 \ 2');这使它起作用。刚刚意识到Imapala使用了额外的\使其正常工作。谢谢StoneGiant