c# - 正则表达式:用特殊字符替换数字中间的位数

标签 c# regex

我有一个非常大的数字(它的长度可能会有所不同)作为输入。

我需要一个正则表达式,它将保留前 3 位数字和后 3 位数字不变,并将它们之间的所有数字替换为某个字符。输出的总长度应保持不变。

例如:

输入123456789123456

输出123xxxxxxxxx456

到目前为止,我能够通过使用将输入数字分成 3 组

^(\d{3})(.*)(\d{3})

第二组是需要替换的那组,所以它会是这样的

$1 {Here goes the replacement of the 2 group} $3

我正在为更换而苦苦挣扎:

Regex r = new Regex("^(\d{3})(.*)(\d{3})");
r.Replace(input,"$1 {Here goes the replacement of the 2 group} $3")

我应该如何在这里写 2 组的替换?

提前致谢。

最佳答案

你可以试试下面的正则表达式,它使用了 lookbehind 和 lookahead,

string str = "123456789123456";
string result = Regex.Replace(str, @"(?<=\d{3})\d(?=\d{3})", "x");
Console.WriteLine(result);
Console.ReadLine();

输出:

123xxxxxxxxx456

IDEONE

DEMO

关于c# - 正则表达式:用特殊字符替换数字中间的位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25764693/

相关文章:

c# - 在 C# 中对结构进行装箱/拆箱是否可以产生与原子结构相同的效果?

c# - Crystal 报表 : Operation not yet implemented

regex - 不使用查询时 url 的 apache 重写规则

句子的正则表达式但忽略了网站

c# - ASP.NET WebAPI 2 OData Controller 中的自定义 GET 操作

c# - 如何在不使用鼠标的情况下执行虚拟鼠标单击 C#

c# - Lucene .NET 搜索结果

用于在 Unicode 字符串中搜索单词边界的 Javascript 正则表达式

regex - 使用正则表达式在Spark中联接两个数据框

regex - 需要帮助在 Perl 中创建一个简单的正则表达式