输入的字符串:Provider=ASEOLEDB.1;Initial Catalog=big;User ID=sa;Persist Security Info=False;Server Name=192.168.2.168:5000;Character Set=cp850
private string SplitCharset(string s, string charset) { Regex rSplit = new Regex(";"); Regex r = new Regex(s); Match m = r.Match(charset); if (m.Success) { MatchCollection mc = rSplit.Matches(charset.Substring(m.Index + s.Length)); if (mc.Count > 0) { return charset.Substring(m.Index + s.Length, mc[0].Index); } else { return charset.Substring(m.Index + s.Length, charset.Length - (m.Index + s.Length)); } } else return ""; }
使用静态Match方法,可以得到源中第一个匹配模式的连续子串。
例如:
Match myMatch = Regex.Match("asdfasdfasdf", @"asdfB");
Console.WriteLine(myMatch.Value);
程序将输出asdf(这里匹配了文本中第二个asdf)
静态的Match方法有2个重载,分别是
Regex.Match(string input, string pattern);
Regex.Match(string input, string pattern, RegexOptions options);
第一种重载的参数表示:输入、模式
第二种重载的参数表示:输入、模式、RegexOptions枚举的“按位或”组合。
RegexOptions枚举的有效值是:
Complied表示编译此模式
CultureInvariant表示不考虑文化背景
ECMAScript表示符合ECMAScript,这个值只能和IgnoreCase、Multiline、Complied连用
ExplicitCapture表示只保存显式命名的组
IgnoreCase表示不区分输入的大小写
IgnorePatternWhitespace表示去掉模式中的非转义空白,并启用由#标记的注释
Multiline表示多行模式,改变元字符^和$的含义,它们可以匹配行的开头和结尾
None表示无设置,此枚举项没有意义
RightToLeft表示从右向左扫描、匹配,这时,静态的Match方法返回从右向左的第一个匹配
Singleline表示单行模式,改变元字符.的意义,它可以匹配换行符
注意:Multiline在没有ECMAScript的情况下,可以和Singleline连用。Singleline和Multiline不互斥,但是和ECMAScript互斥。
静态的Matches方法
这个方法的重载形式同静态的Match方法,返回一个MatchCollection,表示输入中,匹配模式的匹配的集合。
静态的IsMatch方法
此方法返回一个bool,重载形式同静态的Matches,若输入中匹配模式,返回true,否则返回false。
可以理解为:IsMatch方法,返回Matches方法返回的集合是否为空。