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

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

例:

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

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

var regex = new Regex("(?!^).");
var result = regex.Replace(stringUserName, "*");

输出:

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

如何也排除第5位的角色?

参考方案

您可以使用

(?!^)(?<!^.{4}).

请参见regex demo

图案细节

(?!^)-(它可以等同于(?<!^) lookbehind,可以替代使用)负向超前,使字符串开头的位置失败
(?<!^.{4})-如果在字符串的起始位置紧靠当前位置的左边有四个字符(换行符除外),则失败的匹配项将变为否定
.-除换行符外的任何单个字符。

C# demo:

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

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

用大写字母拆分字符串,但忽略AAA Python Regex - python

我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

Java中的“ <<”运算符 - java

最喜欢的语句来自Java的Character类:(1 << Character.PARAGRAPH_SEPARATOR)) >> type PARAGRAPH_SEPARATOR是字节,type是整数。这句话中的操作员,他们做什么?如何以及在哪里可以使用这些运算符?这是oracles java.lang.Character文档。该类中…

如何创建正则表达式以确保单词仅由给定的单个字母和字母组组成? - c#

我正在尝试在C#中创建一个可使用的Regex,这将允许我获取单个字母和/或字母组的列表,并确保单词仅由该列表中的项目组成。例如:“ a”将匹配“ a”,“ aa”,“ aaa”,但不匹配“ ab”“ a b”将匹配“ a”,“ ab”,“ abba”,“ b”,但不匹配“ abc”“ a b abc”将匹配“ a”,“ ab”,“ abc”,“ aabc”,…

Mongo汇总 - javascript

我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …