正则表达式入门:在C#中的简单实践指南
引言
正则表达式就像文本处理的"瑞士军刀",它能快速实现复杂的字符串匹配与操作。本文将以C#为例,带你轻松上手正则表达式的基础使用,并提供即学即用的代码示例!
一、正则表达式基础
1.1 什么是正则表达式?
- 用于描述字符串规则的表达式
- 通过特定符号组合实现模式匹配
- 示例符号速记表:
| 符号 | 说明 | 示例 |
|---|---|---|
. | 匹配任意单个字符 | a.c → abc |
\d | 匹配数字 | \d\d → 42 |
+ | 匹配1次或多次 | a+ → aaaa |
* | 匹配0次或多次 | ab* → a |
[] | 匹配字符集合 | [A-Za-z] |
二、C#中的正则表达式
2.1 核心类库
using System.Text.RegularExpressions; // 必须引入的命名空间
2.2 常用方法速查
| 方法 | 作用 |
|---|---|
| IsMatch | 是否匹配成功 |
| Match | 获取第一个匹配结果 |
| Matches | 获取所有匹配结果 |
| Replace | 替换匹配内容 |
| Split | 根据匹配拆分字符串 |
三、实战代码示例
3.1 基础验证:手机号格式验证
string pattern = @"^1[3-9]\d{9}$"; // 11位数字,1开头
string phone = "13812345678";
bool isValid = Regex.IsMatch(phone, pattern);
Console.WriteLine($"手机号验证结果:{isValid}"); // 输出True
3.2 提取数据:抓取网页中的超链接
string html = @"<a href='https://www.example.com'>链接</a>";
string pattern = @"href=['""](?<url>[^'""]+)['""]";
foreach (Match m in Regex.Matches(html, pattern))
{
Console.WriteLine($"找到链接:{m.Groups["url"].Value}"); // 输出https://www.example.com
}
3.3 字符串替换:隐藏敏感信息
string text = "信用卡号:6225888888888888";
string pattern = @"(\d{4})\d{8}(\d{4})";
string result = Regex.Replace(text, pattern,
m => $"{m.Groups[1].Value}****{m.Groups[2].Value}");
// 输出:信用卡号:6225****8888
四、实用小技巧
4.1 预编译正则表达式(提升性能)
// 使用RegexOptions.Compiled选项
var emailRegex = new Regex(@"^\w+@\w+\.\w+$",
RegexOptions.Compiled | RegexOptions.IgnoreCase);
一旦你有了预编译的Regex对象,你可以多次调用它的Match、Matches、IsMatch等方法来进行匹配操作,而无需每次都重新编译正则表达式。
4.2 使用正则测试工具
1、RegExr 实时可视化测试
2、Regex101 详细错误分析
五、注意事项
1、避免过度复杂的正则表达式
2、注意特殊字符的转义(如\需要写成\)
3、优先使用@""字符串简化书写
4、考虑使用RegexOptions.IgnoreCase忽略大小写
结语
掌握正则表达式能让你的字符串处理事半功倍!现在试着修改示例代码中的模式,处理自己的文本数据吧!如果有任何疑问,欢迎在评论区交流讨论~

2758

被折叠的 条评论
为什么被折叠?



