我的PostgreSQL表格中有注册码,如MU-321-AB,MU / 321 / AB,MU 321-AB等等...... 我需要清除所有这些以获得MU321AB。
为此,我使用以下表达式:
SELECT DISTINCT regexp_replace(ccode, '([^A-Za-z0-9])', ''), ...
此表达式在“NET'但不是在PostgreSQL中,它会清除'只有第一次出现不需要的字符。
如何修改正则表达式,它将替换字符串中所有不需要的字符,以获得仅包含字母和数字的清晰代码?
答案 0 :(得分:1)
使用g
lobal标志,但没有任何捕获组:
SELECT DISTINCT regexp_replace(ccode, '[^A-Za-z0-9]', '', 'g'), ...
请注意,全局标志是标准正则表达式解析器的一部分,因此在这种情况下.NET不遵循标准。此外,由于您不希望从字符串中提取任何内容 - 您只想替换某些字符 - 因此不应使用捕获组()
。