【转】C#中Regex对象的Match()方法和Matches()方法的区别

原文地址:https://www.cnblogs.com/bosins/p/15209968.html

利用Match类和MatchCollection类,可以获得通过一个正则表达式实现的每一个匹配的细节。

Match表示一次匹配,而MatchCollection类是一个Match对象的集合,其中的每一个对象都表示了一次成功的匹配。

1、Match()方法

Match()方法总是获取满足条件的第一个匹配,而不关心满足条件的匹配有多少个。

Match()方法都回一个Match对象,其中包含了匹配的各种细节。

一般,当我们确定只有一个符合条件的匹配或只需要第一个符合条件的匹配时,可以使用Match()。

示例:

// 要匹配的字符串内容
string content="(dfs45545)][(dkjsdjf63)";
// 正则表达式
string RegexStr = @"\(.*?\)";
// 使用Match()匹配
Match m=Regex.Match(content, RegexStr);
// 结果:(dfs45545)

2、Matches()方法

Matches()方法可以得到MathCollection对象的一个集合。这个集合类中包含每一次正则表达式匹配的Match对象。

一般,当我们需要获取所有符合条件的匹配结果时,可以使用Matches()。

示例:

// 要匹配的字符串内容
string content="(dfs45545)][(dkjsdjf63)";
// 正则表达式
string RegexStr = @"\(.*?\)";
// 使用Matches()匹配
MatchCollection mc = Regex.Matches(content, RegexStr);
foreach (Match m in mc)
{
    Console.WriteLine(m.Value);
}
// 结果:将输出(dfs45545)和(dkjsdjf63)两个结果

原文地址:https://www.cnblogs.com/lb809663396/p/5343930.html

//匹配字符串中的连续数字
string txt = "AAA12345678AAAA";
string m = Regex.Match(txt, @"\d+").Value;
Console.WriteLine(m);

 正则表达式中()是代表分组

 例如:(\d{1})(\d{1}) 整个表达式是第一组,第一个括号是第二组,第二个括号是第三组。提取方式跟数组一样

 获取值写法:Groups[1].Value 第一个括号里的值、Groups[2].Value 第二个括号里的值

//匹配字符串中的连续数字(前三位数字)
string txt = "AAA12345678AAAA";
string m = Regex.Match(txt, @"(\d{3})(\d{1,})").Groups[1].Value;
Console.WriteLine(m);

 

posted @ 2022-01-22 11:32  花影疏帘  阅读(383)  评论(0)    收藏  举报