c# - 为什么 Regex.Replace 给我最后一组奇怪的结果

标签 c# regex

一个简单的例子:

Regex.Replace("12345678910999999999", @"(\d{3})(\d{3})(\d{3})(\d{2})", "$1-$2-$3 $4")

这输出到:

123-456-789 10999999999

但是为什么?我已经专门设置了我需要的组索引。并且该组索引包含确切的值(在调试器中检查过)。

这是一个 fiddle : https://dotnetfiddle.net/dkAPx3

最佳答案

将字符串的其余部分与 .* 匹配以将其截断:

Regex.Replace("12345678910999999999", @"^(\d{3})(\d{3})(\d{3})(\d{2}).*", "$1-$2-$3 $4")

我还会在开头添加 ^ 以匹配字符串的开头。

参见 .NET regex demo

关于c# - 为什么 Regex.Replace 给我最后一组奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62936238/

相关文章:

c# - Xamarin 在方向更改时形成内存不足错误

c# - 出奇地慢 : what happened when TakeWhile met AsParallel?

javascript - 正则表达式 : Matching a word containing characters

mysql 选择正则表达式,如 "full-stop"

c# - 基于文本框动态更新WPF Slider

c# - Entity Framework 获取缓慢

c# - char 数组返回值如 5 0'w'

php - 用第二个数组中的值替换第一个数组中的字符串

regex - Vim搜索并通过减少后向引用来替换?

regex - 更改日期格式的 PHP 正则表达式