首页 > 编程笔记 > C#笔记 阅读:8

C# Regex.Matches()的用法(附带实例)

Regex.Matches() 方法在 System.Text.RegularExpressions 命名空间中,可以在字符串内找出所有出现的匹配搜寻规则的内容,此方法的语法如下:
public static MatchCollection = public static Matches(string input, string pattern, RegexOptions options);

【实例 1】使用两个调用 Regex.Matches() 的方法重新设计。
using System.Text.RegularExpressions;

string str = "请参加教师节晚宴,可用 0933-122-123 " + "或是 0933-133-456 联系我";
string pattern = "\\d{4}-\\d{3}-\\d{3}";

// 方法 1
MatchCollection match = Regex.Matches(str, pattern);
foreach (Match m in match)
    Console.WriteLine($"手机号码:{m.Value}, 索引位置:{m.Index}");

// 方法 2
foreach (Match m in Regex.Matches(str, pattern))
    Console.WriteLine($"手机号码:{m.Value}, 索引位置:{m.Index}");
执行结果为:

手机号码:0933-122-123, 索引位置:13
手机号码:0933-133-456, 索引位置:29
手机号码:0933-122-123, 索引位置:13
手机号码:0933-133-456, 索引位置:29


在使用 Regex.Matches() 方法搜寻正则表达式格式的字符串时,如果这些字符串格式以数组的形式存储,且 MatchCollection 对象是 match,那么要取得所搜寻的字符串内容可以使用 match[index] 方式,如下所示:
【实例 2】重新设计实例 1。
using System.Text.RegularExpressions;

string str = "请参加教师节晚宴,可用 0933-122-123 " + "或是 0933-133-456 联系我";
string pattern = "\\d{4}-\\d{3}-\\d{3}";

// 方法 1
MatchCollection match = Regex.Matches(str, pattern);
for (int i = 0; i < match.Count; i++)
    Console.WriteLine($"手机号码:{match[i].Value}, 索引位置:{match[i].Index}");
执行结果和实例 1 相同。

相关文章