正则表达式(二)
贪婪模式:当出现限定符+、?、*、{n,}类似这样的限定符时,正则表达式会默认会可能多的进 行匹配,这种方式叫做“贪婪模式”
在限定符后加?就表示“终止贪婪模式”终止贪婪模式意味着尽可能少的匹配。
环视也是断言(只判断,不匹配)的一种,环视本身不予匹配。
环视有四种:写法是:
(?=)肯定正向环视
(?<=)肯定逆向环视
(?<!)否定逆向环视
在正向环视的时候()不参与分组。
正则表达式是来操作字符串的,会用但是不要滥用。
例如:
将张三:18999141265李四:13111111111王五:13488888888电信:10000移动:10086联通:10010工行:95588传智播客010-82935100传智播客:010-82935150字符串中的电话号码匹配出来:
string s = "张三:18999141265李四:13111111111王五:13488888888电信: 10000移动:10086联通:10010工行:95588,010-82935100:010-82935150";
MatchCollection matches = Regex.Matches(s,@"(?<!\d)\d{5}(?!\d)");
foreach (Match match in matches)
{
Console.WriteLine(match.Value );
}
Console.ReadKey();
#endregion
反向引用引用的也是正则表达式的分组信息。反向引用分组信息是在正则表达式内部进行“引用组”
例如:将" 我...我我..我我我我....爱爱爱..爱..爱...你你...你..你你你..."变成“我爱你”
string s = "我...我我..我我我我....爱爱爱..爱..爱...你你...你..你你你...";
s = s.Replace(".",string.Empty );
s = Regex.Replace(s,@"(.)\1+","$1");
Console.WriteLine(s);
Console.ReadKey();