正则表达式

核心语法速查

类别元字符/语法说明简单示例
字符类 [abc] 匹配 a、b 或 c 中的任意一个字符。 [ae] 匹配 “apple” 中的 ‘a’。
  [^abc] 匹配不在 a、b 或 c 中的任意字符。 [^ae] 匹配 “apple” 中的 ‘p’, ‘p’, ‘l’。
  [a-z] 匹配 a 到 z 范围内的任意字符。 [0-9] 匹配任意数字。
  . 匹配除换行外的任意单个字符。 a.c 匹配 “abc”、“a c”。
  \d 匹配数字。等价于 [0-9] \d+ 匹配 “123”。
  \w 匹配字母、数字、下划线。 \w+ 匹配 “user_name123”。
  \s 匹配空白字符(空格、制表符等)。 \s 匹配 “a b” 中的空格。
量词 * 匹配前面的元素 0 次或多次。 ab*c 匹配 “ac”、“abc”、“abbc”。
  + 匹配前面的元素 1 次或多次。 ab+c 匹配 “abc”、“abbc”,不匹配 “ac”。
  ? 匹配前面的元素 0 次或 1 次。 ab?c 匹配 “ac” 或 “abc”。
  {n} 匹配前面的元素 恰好 n 次。 a{3} 匹配 “aaa”。
  {n,} 匹配前面的元素 至少 n 次。 \d{2,} 匹配 “12” 或 “12345”。
  {n,m} 匹配前面的元素 n 到 m 次。 \d{2,4} 匹配 “12”、“123”、“1234”。
定位点 ^ 匹配字符串的开始(多行模式下匹配行首)。 ^Hello 匹配以 “Hello” 开头的字符串。
  $ 匹配字符串的结束(多行模式下匹配行尾)。 end$ 匹配以 “end” 结尾的字符串。
  \b 匹配单词边界(字母数字和非字母数字之间)。 \bcat\b 匹配 “cat”,不匹配 “category”。
分组与捕获 (...) 捕获组,将子模式分组并捕获匹配的文本。 (ab)+ 匹配 “ababab”,并捕获内容。
  (?:...) 非捕获组,只分组,不捕获。提升性能。 (?:ab)+ 匹配但不捕获。
  (?<name>...) 命名捕获组,通过名称而非索引访问。 (?<year>\d{4}) 捕获名为 “year” 的4位数字。
零宽断言 (?=...) 正向先行断言,主表达式后必须紧跟此模式。 \w+(?=\.) 匹配后跟点的单词(不包含点)。
  (?!...) 负向先行断言,主表达式后不能紧跟此模式。 \d{3}(?!\d) 匹配后面不是数字的3位数。
  (?<=...) 正向后行断言,主表达式前必须紧跟此模式。 (?<=\$)\d+ 匹配美元符号后的数字。
  (?<!...) 负向后行断言,主表达式前不能紧跟此模式。 (?<!-)\d+ 匹配前面不是负号的数字。
转义 \ 转义特殊字符,使其匹配字面值。 \. 匹配字符 “.”, \\ 匹配 “\”。
选项 (?i) 内联选项,忽略大小写(可放在组内)。 (?i)hello 匹配 “hello”, “HELLO”。

 

代码

 1        // 1. 静态方法 (适用于单次、快速匹配)
 2        string input = "Hello World";
 3        bool isMatch = Regex.IsMatch(input, @"^Hello"); // 检查是否匹配
 4        //MessageBox.Show(isMatch.ToString());
 5        //MessageBox.Show(isMatch ? "匹配成功" : "匹配失败");
 6 
 7        Match match =Regex.Match(input,@"\b(\w+)\b"); // 返回第一个匹配
 8 
 9        MatchCollection matches=Regex.Matches(input, @"\b\w+\b"); // 返回所有匹配
10 
11 
12        //这里是区分大小写
13        string result=Regex.Replace(input, @"World", "C#"); //替换   结果:"Hello C#"
14        string result1 = Regex.Replace(input, @"world", "C#"); //替换  结果:"Hello World"
15 
16        string[] parts=Regex.Split("apple,banana,orange", @","); //拆分  结果:{"apple","banana","orange"}
17 
18 
19 
20        // 2. 实例方法 (适用于重复使用同一模式,效率更高)
21        Regex regex = new Regex(@"\b(?<word>\w+)\b", RegexOptions.IgnoreCase);
22        Match m = regex.Match(input);
23        Console.WriteLine("--------------------------------");
24        foreach (Group g in m.Groups)
25        {
26            Console.WriteLine($"Group:{g.Name}: {g.Value}"); // 通过名称访问: m.Groups["word"].Value
27        }
28        Console.WriteLine("--------------------------------");
29 
30 
31        // 3. 常用 RegexOptions 选项
32        // IgnoreCase: 忽略大小写 | Multiline: 多行模式 (改变 ^ 和 $ 的行为)
33        // Compiled: 编译为MSIL,提升多次匹配速度(增加启动开销)
34        // CultureInvariant: 忽略区域性差异

 

posted @ 2025-12-25 09:46  家煜宝宝  阅读(2)  评论(0)    收藏  举报