正则表达式:
元字符:
.匹配任何单个字符,
[]匹配括号内的任何一个字符,
()改变优先级,定义提取组,
|将两个匹配条件进行逻辑或运算,
*匹配0至多个它之前的子表达式,和通配符*没关系,
+匹配前面的子表达式一次或多次,
?匹配前面的子表达式零次或一次,
{n}匹配前面表达式确定的n次,
{n,}匹配前面表达式至少n次,
{n,m}匹配前面表达式n到m次,
^匹配一行的开始(还有另外一种意思“非”),
$匹配行结束符
简写表达式:
\d代表一个数字,等同于[0-9]
\D代表非数字,等同于[^0-9]
\s代表换行符、Tab制表符等空白字符
\S代表非空白字符
\w匹配字母或数字或下划线或汉字,即能组成单词的字符
\W匹配任意不是字母,数字,下划线,汉字的字符,即非\w等同于[^\w]
d:digital s:space w:word 大写就是“非”
//string s = "老王的英文名字是Wrong";
//Match match = Regex.Match(s, @"^(\w+)的英文名字是(\w+)$");
是否匹配成功
//if (match.Success)
//{
// //分组序号从1开始
// string cnName = match.Groups[1].Value;
// string enName = match.Groups[2].Value;
// Console.WriteLine(cnName);
// Console.WriteLine(enName);
//}
贪婪模式与非贪婪模式
贪婪模式: 默认情况下,正则表达式使用最长的匹配原则
非贪婪模式: 当字符“?”紧随任何其他限定符(*、+、?、{n}、{n,m})之后时,匹配模式变成使用最短匹配原则
匹配组
//string s = "你是tom,我是jerry,他是韩梅梅,哈哈";
//MatchCollection matches = Regex.Matches(s, @"是(\w+),");
匹配组从0开始
//for (int i = 0; i < matches.Count; i++)
//{
// Match match = matches[i];
// //match.Value是匹配的内容
// Console.WriteLine(match.Value);
// string name = match.Groups[1].Value;
// Console.WriteLine(name);
//}