从10位数字中获取所有可能的连续4位数字

Kod*_*101 4 .net c# regex

我正在尝试使用正则表达式从10位数字中获取所有可能的连续4位数字.喜欢

num = "2345678901";
Run Code Online (Sandbox Code Playgroud)

输出: 2345,3456,4567,5678,6789,7890,8901

这些简单的正则表达式不起作用:

[\d]{4}
(\d\d\d\d)
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 7

您需要使用(?=(\d{4}))正则表达式匹配重叠匹配.

请参阅正则表达式演示

您正在使用的正则表达式都使用4位数的文本块,因此重叠值不匹配.使用(?=...)正向前瞻,您可以测试输入字符串中的每个位置,并从这些位置捕获 4个数字块,而不消耗字符(即,不将正则表达式引擎指针移动到这4个数字块之后的位置).

在此输入图像描述

C#demo:

var data = "2345678901";
var res = Regex.Matches(data, @"(?=(\d{4}))")
            .Cast<Match>()
            .Select(p => p.Groups[1].Value)
            .ToList();
Console.WriteLine(string.Join("\n", res));
Run Code Online (Sandbox Code Playgroud)