32人参与 • 2026-09-10 • 正则表达式
在日常 .net 开发中,**正则表达式(regex)**是处理字符串的利器:数据校验、日志分析、文本替换、爬虫规则、接口参数验证……几乎无处不在。
本文将带你系统掌握 c# 中的正则表达式,包括:
正则表达式(regular expression)是一种用于匹配字符串模式的规则表达式。
在 c# 中,正则表达式由 .net 框架中的
👉 system.text.regularexpressions.regex 类提供支持。
使用命名空间:
using system.text.regularexpressions;
| 方法 | 说明 |
|---|---|
regex.ismatch() | 判断是否匹配 |
regex.matches() | 获取所有匹配结果 |
regex.match() | 获取第一个匹配 |
regex.replace() | 替换匹配内容 |
regex.split() | 按规则拆分字符串 |
| 表达式 | 含义 |
|---|---|
\d | 数字 |
\d | 非数字 |
\w | 字母、数字、下划线 |
\w | 非单词字符 |
\s | 空白字符 |
. | 任意字符(除换行) |
[abc] | 匹配 a/b/c |
[^abc] | 不匹配 a/b/c |
示例:
string input = "abc123"; bool result = regex.ismatch(input, @"\d+"); console.writeline(result); // true
| 表达式 | 含义 |
|---|---|
^ | 字符串开始 |
$ | 字符串结束 |
\b | 单词边界 |
\b | 非单词边界 |
示例:匹配以 s 开头的单词
string text = "a thousand splendid suns";
matchcollection matches = regex.matches(text, @"\bs\s*");
foreach (match match in matches)
{
console.writeline(match.value);
}
输出:
splendid suns
| 表达式 | 含义 |
|---|---|
* | 0次或多次 |
+ | 1次或多次 |
? | 0或1次 |
{n} | n次 |
{n,} | 至少n次 |
{n,m} | n到m次 |
示例:匹配手机号
string pattern = @"^1\d{10}$";
(\w+)
示例:
string text = "one two"; string pattern = @"(\w+)\s(\w+)"; string result = regex.replace(text, pattern, "$2 $1"); console.writeline(result); // two one
(?<name>pattern)
示例:
string text = "2025-03-04";
string pattern = @"(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})";
match match = regex.match(text, pattern);
console.writeline(match.groups["year"].value);
console.writeline(match.groups["month"].value);
console.writeline(match.groups["day"].value);
断言不会消耗字符,只判断位置。
\w+(?=\.)
匹配 . 之前的内容
\b(?!un)\w+\b
匹配不以 un 开头的单词
(?<=19)\d{2}
示例:
string input = "1851 1999 1950 1905 2003";
string pattern = @"(?<=19)\d{2}\b";
foreach (match match in regex.matches(input, pattern))
{
console.writeline(match.value);
}
输出:
99 50 05
string input = "hello world "; string result = regex.replace(input, @"\s+", " "); console.writeline(result);
string pattern = @"^[\w\.-]+@[\w\.-]+\.\w+$";
string pattern = @"<title>(.*?)</title>";
⚠️ 注意:复杂 html 不建议用正则,建议使用 html 解析器。
string pattern = @"^\d{17}[\dx]$";
regex regex = new regex(pattern, regexoptions.compiled);
适用于高频调用场景。
private static readonly regex phoneregex =
new regex(@"^1\d{10}$", regexoptions.compiled);
避免重复创建对象。
问题示例:
(a+)+
解决方法:
(?>...)| 错误 | 说明 |
|---|---|
| 忘记使用 @ 字符串 | 转义错乱 |
| .* 贪婪匹配过多 | 应使用 .*? |
| 正则写得过长 | 建议拆分逻辑 |
| 复杂 html 用正则 | 容易翻车 |
正则适合做:
✔ 字符串校验
✔ 模式匹配
✔ 批量替换
✔ 日志分析
c# 正则表达式核心掌握五点:
建议学习路径:
基础语法 → 分组 → 断言 → 实战 → 性能优化
正则表达式不是洪水猛兽,而是一把利器。
写得好,是优雅。
写得烂,是灾难。
建议:
✔ 多写小例子练习
✔ 善用在线调试工具
✔ 养成写注释习惯
到此这篇关于c#正则表达式从入门到实战的文章就介绍到这了,更多相关c#正则表达式内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论