正则表达式替换排除第一个和第n个字符

G. *_*nos 5 c# regex

我试图string用*(星号)掩盖名称,并排除第一个和第n个(第5个)字符。

例:

UserFirstName-> U **** F *******

我设法排除的第一个字符用(?!^).

var regex = new Regex("(?!^).");
var result = regex.Replace(stringUserName, "*");
Run Code Online (Sandbox Code Playgroud)

输出:

UserFirstName-> U ************

我还如何排除第5位的角色?

Wik*_*żew 5

您可以使用

(?!^)(?<!^.{4}).
Run Code Online (Sandbox Code Playgroud)

正则表达式演示

图案细节

  • (?!^)-(等于(?<!^)您可以替代使用lookbehind)在字符串开始位置失败的否定超前
  • (?<!^.{4}) -如果在字符串的开始位置紧靠当前位置的左侧,除了换行符之外还有其他四个字符,则负向后寻找将使匹配失败
  • . -除换行符外的任何单个字符。

C#演示

string text = "UserFirstName";
int SkipIndex = 5;
string pattern = $@"(?!^)(?<!^.{{{SkipIndex-1}}}).";
Console.WriteLine(Regex.Replace(text, pattern, "*"));
Run Code Online (Sandbox Code Playgroud)

输出: U***F********