- 量词
量词用于指定匹配字符的数量。例如,正则表达式 a{2,4} 匹配两个到四个连续的字符 a。
- 边界匹配
边界匹配用于匹配文本的开头或结尾。例如,正则表达式 ^abc 匹配以 abc 开头的文本,而正则表达式 abc$ 匹配以 abc 结尾的文本。
可以使用 Regex 类来创建和操作正则表达式。以下是一些常用的 Regex 类的方法:
- Match 方法:用于在输入字符串中搜索匹配项,并返回第一个匹配项。
- Matches 方法:用于在输入字符串中搜索所有匹配项,并返回一个匹配项集合。
- Replace 方法:用于替换输入字符串中的匹配项。
- Split 方法:用于将输入字符串按照正则表达式匹配项进行分割,并返回分割后的字符串数组。
贪婪模式和非贪婪模式
- 贪婪模式:尽可能的多匹配
- 非贪婪模式:在匹配成功的情况下尽量少匹配
- 属于贪婪的量词:{n,m}{m,},"?","*","+"
- 在贪婪模式的量词后面加上?,就变成了非贪婪模式量词,也叫做忽略优先量词
string pattern = @"[eo]";//提取包含eo的所有字符
[^条件],非,与不在[条件]中的任何单个字符匹配,默认情况下区分大小写
pattern = @"[^eow]";//Hll Wrld匹配不包含eow的所有项
[first-last]:区范围,从first开始到last范围的任何单个字符匹配,范围对应的是ASCII表
pattern = @"[a-f]";//匹配a-f范围的所有项
pattern = @"[A-z]";//ASCII表对应的范围
//加上[\^.....]:表示在...到..范围
pattern = @"[\^A-Za-z]";
pattern = @"Wo.";//输出匹配项
input = "f4_fa5[uuu";
//\w:与任何单词字符进行匹配,等价于[0-9a-zA-Z]
//\w:可以匹配字母、下划线、数字
pattern = @"\w";//f4_fa5uuu
pattern = @"\W";//[
string pattern = @"\S\s\S"; // 匹配非空字符、空白字符、非空字符
string input = "Hello World";
//在给定的输入字符串 "Hello World" 中,正则表达式匹配到了 "o W" 这个满足模式的子字符串。
- \S 匹配任何非空字符。\S 是 \s 的反义,\s 匹配空白字符(包括空格、制表符、换行符等)。
- \s 匹配一个空白字符。
- \S 再次匹配任何非空字符。
-
//只匹配数字 //\d:匹配一个数字字符。等价于[0-9] pattern = @"\d";//显示数字 //\D:匹配一个非数字字符。等价于[^0-9] pattern = @"\D";//显示字母
贪婪模式和非贪婪模式
- 贪婪模式:尽可能的多匹配
- 非贪婪模式:在匹配成功的情况下尽量少匹配
- 属于贪婪的量词:{n,m}{m,},"?","*","+"
- 在贪婪模式的量词后面加上?,就变成了非贪婪模式量词,也叫做忽略优先量词
string pattern = "wo*";//尽可能的输出
string input = "woods";
//定位符:^开头
pattern = @"^wo*d";
input = "woodwoooood";//wood
//input = "wooowoooood";//空
//$:表示必须出现字符串中的末尾或出现在换行之前
pattern = @"wo*d$";//woooood
//
pattern = @"^wo+d.o*d$";
//\A:匹配必须出现在字符串开头 ascii
pattern = @"\A\w{4}";
input = "Code-007";//Code
//\Z:匹配必须出现在字符串末尾
pattern = @"\w{3}\Z";//007
//将(和)之间的表达式定义为“组”
input = "(1)(3)(5)[7](9)";
//\(读取( \)读取)加\表示不转义
pattern = @"\(\d\)";//(1)(3)(5)(9)
//G:表示匹配到上次结束的点
pattern = @"\G\(\d\)";//(1)(3)(5)
MatchCollection mc = Regex.Matches(input, pattern);
string info = "";
foreach (Match m in mc)
{
info += m;
}
MessageBox.Show(info);