【问题标题】:Using Regex Replace to remove duplicate numbers stored as string-Alteryx使用 Regex Replace 删除存储为字符串的重复数字-Alteryx
【发布时间】:2021-12-10 13:17:52
【问题描述】:

由于应用于大量列,尝试使用正则表达式替换删除 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

【问题讨论】:

    标签: regex regexp-replace alteryx


    【解决方案1】:

    你可以使用

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

    请参阅regex demo

    您需要在正则表达式替换后修剪逗号,因此使用TRIM

    详情

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

    【讨论】:

    • 嘿,维克托,一如既往的好答案。如果在第一个捕获组之后直接添加,?,可以去掉 Trim() 函数吗?
    • Wiktor 是欧洲语言,使用逗号作为小数点。如果您不想要这种行为,请从方括号内删除逗号。
    • 查看我的第一条评论。如果您在第一组之后添加,?,它将解决问题并且您也不需要 Trim() 函数。
    • @ChrisMaurer 感谢您的支持。是的,最初建议的模式开头或结尾的可选逗号模式解决了字符串中逗号的问题。
    • @arisophia Chris 的建议是正确的,可选的逗号模式会删除唯一值之间的多余逗号。
    猜你喜欢
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 2012-12-27
    • 2016-08-24
    相关资源
    最近更新 更多