C#正则表达式基础与常用语法

需积分: 1 0 下载量 13 浏览量 更新于2024-07-28 收藏 266KB DOC 举报
"C#正则表达式的学习笔记和常用语法" C#中的正则表达式是一种强大的文本处理工具,常用于数据验证、搜索、替换等操作。正则表达式(Regular Expression)允许开发者通过模式匹配的方式处理字符串。下面将详细阐述在C#中使用正则表达式的一些关键知识点。 首先,我们来看一下"C#"中如何定义正则表达式字符串。在C#中,为了防止反斜杠`\`被解释为转义字符,我们可以使用`@`符号来创建一个逐字字符串(verbatim string literal)。例如: ```csharp string x = "D:\\MyHuang\\MyDoc"; // 需要转义反斜杠 string y = @"D:\MyHuang\MyDoc"; // 使用@,无需转义 ``` 接下来,我们了解一下正则表达式的基本语法字符: - `\d`:匹配0-9的数字,相当于 `[0-9]` - `\D`:匹配非数字的字符,即 `\d` 的补集 - `\w`:匹配字母、数字或下划线,相当于 `[A-Za-z0-9_]` - `\W`:匹配非单词字符,即 `\w` 的补集 - `\s`:匹配任何空白字符,包括换行符、回车符、制表符等 - `\S`:匹配非空白字符,即 `\s` 的补集 - `.`:匹配除换行符外的任何字符 - `[...` 和 `[^...]`:分别用于匹配和排除指定范围内的字符 例如,以下代码展示了这些基本语法字符的使用: ```csharp string i = "\n"; string m = "3"; Regex r = new Regex(@"\D"); // 匹配非数字字符 Console.WriteLine(r.IsMatch(i)); // 输出:true Console.WriteLine(r.IsMatch(m)); // 输出:false r = new Regex("[a-z0-9]"); Console.WriteLine(r.IsMatch(i)); // 输出:false Console.WriteLine(r.IsMatch(m)); // 输出:true ``` 此外,正则表达式还包括定位字符,它们不实际匹配任何字符,而是标记字符串中的位置: - `^`:匹配输入字符串的开始位置 - `$`:匹配输入字符串的结束位置 - `\b`:匹配单词边界,例如在单词和空格之间 - `\B`:匹配非单词边界 例如,如果你想要匹配一个以数字开头的字符串,可以这样写: ```csharp Regex r = new Regex("^\d+"); ``` 正则表达式还支持量词,用于指定某个模式应该出现的次数: - `{n}`:匹配前一个字符恰好n次 - `{n,}`:匹配前一个字符至少n次 - `{n,m}`:匹配前一个字符至少n次,但不超过m次 例如,以下正则表达式匹配长度为3到5的数字串: ```csharp Regex r = new Regex @"\d{3,5}"; ``` 除了这些基本构造,还有更多的高级特性,比如预查(lookahead `(?=...)` 和负预查 `(?!...)`)、后顾(lookbehind `(?<=...)` 和负后顾 `(?!...)`)、分组(`(group)` 和 `(?:non-capturing group)`)等,它们提供了更复杂的匹配逻辑。 C#的正则表达式功能强大,但理解并熟练使用需要一定的练习。通过学习和实践,开发者可以充分利用正则表达式来解决各种文本处理问题。