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", @"\basdf\B");
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方法返回的集合是否为空。


 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM