我正在尝试使用Regex动态捕获字符串中的所有数字,例如1234-12-1234或1234-123-1234,而不知道每个字符串段中将出现的字符数。我已经能够通过以下表达式使用正面向前捕获它:[0-9] *(?= - )。但是,当我尝试将数字替换为Xs,使得在最后一个破折号之前出现的每个数字都被X替换时,正则表达式不会返回数字1:1的X.相反,每个部分恰好返回两个X.如何让正则表达式返回以下内容:
1234-123-1234 -> XXXX-XXX-1234
1234-12-1234 -> XXXX-XX-1234
而不是当前的
1234-123-1234 -> XX-XX-1234
答案 0 :(得分:1)
问题是,通过在数字匹配后直接放置*,多个数字将被替换为单个X.然后零数字将被替换为单个X.因此,任何数字的数字都将被有效替换作为两个X。
请改用:
[0-9](= * - 。)