C# Regex.Matches()的用法(附带实例)
Regex.Matches() 方法在 System.Text.RegularExpressions 命名空间中,可以在字符串内找出所有出现的匹配搜寻规则的内容,此方法的语法如下:
【实例 1】使用两个调用 Regex.Matches() 的方法重新设计。
在使用 Regex.Matches() 方法搜寻正则表达式格式的字符串时,如果这些字符串格式以数组的形式存储,且 MatchCollection 对象是 match,那么要取得所搜寻的字符串内容可以使用 match[index] 方式,如下所示:
【实例 2】重新设计实例 1。
public static MatchCollection = public static Matches(string input, string pattern, RegexOptions options);
- input 是要搜寻的字符串;
- pattern 是搜寻规则的正则表达式;
-
options 则是比对的选项,如果 input 字符串中有匹配 pattern 格式的内容,则会回传 MatchCollection 对象,取得 MatchCollection 对象名称是 match。可以声明 Match 对象遍历加以输出,这时有下列属性可以应用:
- match.Success:如果搜寻成功,回传 true,否则回传 false;
- match.Value:搜寻成功的内容;
- match.Index:搜寻成功内容的索引。
【实例 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] 方式,如下所示:
- match[index].Success:如果搜寻成功,回传 true,否则 false;
- match[index].Value:搜寻成功的内容;
- match[index].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 相同。