C# 正则表达式学习笔记
正则表达式是一种用来匹配文本模式的语法。在C#中,可以使用正则表达式来进行字符串操作,如查找、替换、提取特定格式信息等等。本文将介绍正则表达式的基本语法和常见应用场景,并举例说明。
基本语法
匹配单个字符
字符 | 含义 |
---|---|
. | 匹配任意单个字符 |
\d | 匹配任意数字 |
\w | 匹配任意字母或数字或下划线 |
\s | 匹配任意空白字符,包括空格、制表符、换行符等 |
[abc] | 匹配a、b、c中的任意一个字符 |
[^abc] | 匹配除了a、b、c以外的任意一个字符 |
匹配位置
字符 | 含义 |
---|---|
^ | 匹配行首 |
$ | 匹配行尾 |
\b | 匹配单词边界 |
\B | 匹配非单词边界 |
重复匹配
字符 | 含义 |
---|---|
* | 匹配前面的字符0次或多次 |
+ | 匹配前面的字符1次或多次 |
? | 匹配前面的字符0次或1次 |
{m,n} | 匹配前面的字符m次到n次 |
分组和引用
字符 | 含义 |
---|---|
() | 将括号内的表达式作为一个分组 |
\1,\2,... | 引用第1、2、...个分组中匹配到的内容 |
常见应用场景
邮箱验证
csharpCopy Codestring email = "example@example.com";
string pattern = @"^(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)$";
bool isMatch = Regex.IsMatch(email, pattern);
该正则表达式可以匹配大部分邮箱格式,包括常见的@符号和点符号。
身份证号码校验
csharpCopy Codestring idCard = "110101199003076192";
string pattern = @"^\d{17}(\d|X)$";
bool isMatch = Regex.IsMatch(idCard, pattern);
该正则表达式可以匹配中国大陆身份证号码格式,其中末位可以是数字或大写字母X。
URL提取
csharpCopy Codestring html = "<a href='https://www.example.com'>Example</a>";
string pattern = @"href\s*=\s*['""]([^'""]+)['""]";
Match match = Regex.Match(html, pattern);
if (match.Success)
{
string url = match.Groups[1].Value;
}
该正则表达式可以从HTML中提取出URL链接地址。
结语
本文介绍了C#正则表达式的基本语法和常见应用场景,并举例说明。掌握正则表达式可以提高字符串操作的效率和精度,是C#编程中重要的技能之一。