RegEX正则表达式截取字符串

输入的字符串: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方法返回的集合是否为空。


原文地址:https://www.cnblogs.com/wenxinxiaowu/p/3402108.html