正则表达式替换不替换字符的匹配字符

时间:2018-04-02 03:46:57

标签: regex pcre

我正在尝试使用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

Link to demo

1 个答案:

答案 0 :(得分:1)

问题是,通过在数字匹配后直接放置*,多个数字将被替换为单个X.然后零数字将被替换为单个X.因此,任何数字的数字都将被有效替换作为两个X。

请改用:

  

[0-9](= * - 。)