使用 Regex Replace 删除存储为字符串的重复数字-Alteryx

Using Regex Replace to remove duplicate numbers stored as string-Alteryx

由于应用于大量列,正在尝试使用正则表达式替换删除 alteryx 中同一单元格中的重复数字。以下是我目前的公式。它适用于除最后一行之外的所有行,其中小数点是数字被删除,而不是仅仅删除同一单元格中逗号之间的重复数字。有什么建议么?我一直在玩 regex101.com 中的公式,但似乎无法弄明白。

TRIM(REGEX_Replace([CurrentField], '(-?\d+(?:[.,]\d+)?), (?=.*\1)', ''))

ID Description Price CurrentOUTPUT Desired Output
0 red 0,0,67,67,0 0,67 0,67
1 blue -30,-30 -30 -30
2 green 0.03,0.045,0.03 0.03,0.045 0.03,0.045
2 green 1.17,0.37,0.36,0.36,0.37 1.10.36,0.37 1.17,0.37,0.36

你可以使用

TRIM(REGEX_Replace([_CurrentField_], ',?(-?\d+(?:[.,]\d+)?)(?=.*)', ''), ',')

参见regex demo

正则表达式替换后需要 trim 逗号,因此使用 TRIM

详情:

  • ,? - 一个可选的逗号
  • (-?\d+(?:[.,]\d+)?) - 第 1 组:一个可选的减号,一位或多位数字,然后是可选的 ., 序列和一位或多位数字
  • (?=.*) - 匹配一个位置的正向前瞻,紧跟其后的是除换行符之外的任何零个或多个字符,然后是第 1 组值。