由于应用于大量列,试图使用正则表达式替换在alteryx中删除相同单元格中的重复数字。下面是我现在的公式。它适用于所有行,除了最后一行,其中小数是正在删除的数字,而不是只是在同一单元格中删除逗号之间的重复数字。有什么建议吗?我一直在玩regex101.com的公式,似乎不能弄清楚。
修剪(REGEX_Replace ([CurrentField],"(- ? d + (?: [,] d +)?),(?=.* 1 )', ''))
描述 | 价格CurrentOUTPUT | 期望输出 | 0 | 红 | 0, 0, 67, 67, 0 | 0, 67 | 0, 67 | 1
---|---|---|---|---|
蓝色 | -30年,-30年 | -30 | -30 | |
绿色 | 0.03, 0.045, 0.03 | 0.03, 0.045 | 0.03, 0.045 | |
绿色 | 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+)?)(?=.*1)', ''), ',')
参见regex演示。
您需要在regex替换后修剪逗号,因此使用TRIM
。
细节:
,?
-可选逗号(-?d+(?:[.,]d+)?)
-组1:一个可选的减号,一个或多个数字,然后是一个可选的.
或,
序列和一个或多个数字(?=.*1)
-一个积极的前瞻性匹配的位置,紧跟着任何零或更多的字符,除了换行符,然后尽可能多的组1值。