
C# 正则表达式语法大全
正则表达式(Regular Expressions)是一种强大的文本处理工具,它允许你通过特定的模式匹配和搜索、替换字符串中的特定内容。C# 提供了对正则表达式的全面支持,主要通过 System.Text.RegularExpressions 命名空间下的类来实现。以下是一些常用的 C# 正则表达式语法及其示例:
基本字符匹配
- .:匹配除换行符以外的任意单个字符。例如,a.c 可以匹配 "abc"、"adc",但不匹配 "ac" 或 "abbc"。
- [xyz]:字符集合,匹配方括号内的任意一个字符。例如,[abc] 可以匹配 "a"、"b" 或 "c"。
- [^xyz]:负向字符集合,匹配不在方括号内的任意字符。例如,[^abc] 可以匹配除了 "a"、"b" 和 "c" 以外的任何字符。
- \d:匹配一个数字字符,等价于 [0-9]。
- \D:匹配一个非数字字符,等价于 [^0-9]。
- \w:匹配一个字母、数字或下划线字符,等价于 [A-Za-z0-9_]。
- \W:匹配一个非字母、非数字或非下划线字符,等价于 [^A-Za-z0-9_]。
- \s:匹配任何空白字符,包括空格、制表符、换页符等。
- \S:匹配任何非空白字符。
量词
- {n}:恰好匹配 n 次。例如,a{2} 可以匹配 "aa",但不能匹配 "a" 或 "aaa"。
- {n,}:至少匹配 n 次。例如,a{2,} 可以匹配 "aa"、"aaa"、"aaaa" 等。
- {n,m}:至少匹配 n 次,但不超过 m 次。例如,a{2,4} 可以匹配 "aa"、"aaa" 或 "aaaa",但不能匹配 "a" 或 "aaaaa"。
- *:匹配零次或多次。例如,a* 可以匹配 ""、"a"、"aa"、"aaa" 等。
- +:匹配一次或多次。例如,a+ 可以匹配 "a"、"aa"、"aaa" 等,但不能匹配 ""。
- ?:匹配零次或一次。例如,a? 可以匹配 "" 或 "a",但不能匹配 "aa"。
位置匹配
- ^:匹配输入字符串的开始位置。如果设置了多行标志(Multiline),也可以匹配每行的开始。
- $:匹配输入字符串的结束位置。如果设置了多行标志(Multiline),也可以匹配每行的结束。
- \b:匹配单词边界,即单词与空格之间的位置。
- \B:匹配非单词边界的位置。
分组和捕获
- (pattern):捕获匹配的子串,并可以在后续的表达式中引用或使用。例如,(abc) 可以匹配 "abc",并将 "abc" 作为一个捕获组。
- (?:pattern):非捕获组,用于分组但不捕获匹配的子串。例如,(?:abc) 不会将 "abc" 作为一个捕获组。
- (?=pattern):正向前瞻断言,匹配后面跟着指定模式的字符串,但不消耗字符。例如,(?=abc)def 可以匹配 "abcdef",因为 "def" 后面跟着 "abc"。
- (?!pattern):负向前瞻断言,匹配后面不跟着指定模式的字符串,但不消耗字符。例如,(?!abc)def 可以匹配 "defg",但不能匹配 "abcdef"。
转义字符
- \:转义字符,用于匹配一些特殊字符或表示某些特殊的构造。例如,\. 可以匹配 "." 字符本身,而 \\ 可以匹配 "" 字符。
常用方法
在 C# 中,你可以使用 Regex 类提供的各种方法来操作正则表达式,如:
- IsMatch(string input):判断输入字符串是否与正则表达式模式匹配。
- Match(string input):返回第一个匹配项的 Match 对象。
- Matches(string input):返回一个包含所有匹配项的 MatchCollection 集合。
- Replace(string input, string replacement):用指定的替换字符串替换输入字符串中所有匹配的子串。
示例代码
using System; using System.Text.RegularExpressions; class Program { static void Main() { string pattern = @"\d+"; // 匹配一个或多个数字 string input = "There are 123 apples and 456 oranges."; // 判断是否匹配 bool isMatch = Regex.IsMatch(input, pattern); Console.WriteLine("Is match: " + isMatch); // 获取第一个匹配项 Match match = Regex.Match(input, pattern); if (match.Success) { Console.WriteLine("First match: " + match.Value); } // 获取所有匹配项 MatchCollection matches = Regex.Matches(input, pattern); foreach (Match m in matches) { Console.WriteLine("Match found: " + m.Value); } // 替换匹配项 string replacedInput = Regex.Replace(input, pattern, "XXX"); Console.WriteLine("Replaced input: " + replacedInput); } }上述文档介绍了 C# 中正则表达式的基本语法和一些常用方法,希望能帮助你更好地理解和使用正则表达式进行文本处理。
