c#中的递归正则表达式

本文关键字:正则表达式 递归 | 更新日期: 2023-09-27 18:17:16

我正在用c#练习正则表达式。这是我的代码:

string test =
    "this is whole new line, with different parameters 10.1.2.1, 10.1.5.1, 10.1.3.1";
string a = Regex.Match(test, "10.[0-9].[0-9]+.[0-9]+").Value;
Console.WriteLine(a);

结果为10.1.2.1。它找到第一个匹配项,就这样了。

如何递归地执行这个函数?我是否需要添加一些额外的代码,或者有一个正则表达式类,这是一个内置的函数(我更喜欢)?

c#中的递归正则表达式

您使用Match方法显式地只请求一个匹配。您应该使用Matches,并遍历结果:

string test = "this is whole new line, with different parameters 10.1.2.1, 10.1.5.1, 10.1.3.1";
foreach(Match result in Regex.Matches(test, "10.[0-9].[0-9]+.[0-9]+"))
{
    Console.WriteLine(result);  
}

该代码将打印以下内容:

10.1.2.1
10.1.5.1
10.1.3.1

来自RegEx.Match()的文档:

在指定的输入字符串中搜索在Regex构造函数中指定的正则表达式

它做了它应该做的,返回第一个匹配。如果你想要所有的匹配,你应该使用RegEx.Matches(string, string)