黑色网站素材百度账号登录不了
黑色网站素材,百度账号登录不了,渠道推广方案,二级域名网站如何申请吗在日常 .NET 开发中#xff0c;**正则表达式#xff08;Regex#xff09;**是处理字符串的利器#xff1a;数据校验、日志分析、文本替换、爬虫规则、接口参数验证……几乎无处不在。
本文将带你系统掌握 C# 中的正则表达式#xff0c;包括#xff1a;
✅ 基础语法结构✅…在日常 .NET 开发中**正则表达式Regex**是处理字符串的利器数据校验、日志分析、文本替换、爬虫规则、接口参数验证……几乎无处不在。本文将带你系统掌握 C# 中的正则表达式包括✅ 基础语法结构✅ 常用匹配规则✅ 分组与断言进阶重点✅ 替换与实战案例✅ 性能优化建议✅ 常见坑位总结一、什么是正则表达式正则表达式Regular Expression是一种用于匹配字符串模式的规则表达式。在 C# 中正则表达式由 .NET 框架中的System.Text.RegularExpressions.Regex类提供支持。使用命名空间usingSystem.Text.RegularExpressions;二、Regex 常用方法方法说明Regex.IsMatch()判断是否匹配Regex.Matches()获取所有匹配结果Regex.Match()获取第一个匹配Regex.Replace()替换匹配内容Regex.Split()按规则拆分字符串三、正则表达式基础语法1️⃣ 字符类表达式含义\d数字\D非数字\w字母、数字、下划线\W非单词字符\s空白字符.任意字符除换行[abc]匹配 a/b/c[^abc]不匹配 a/b/c示例stringinputabc123;boolresultRegex.IsMatch(input,\d);Console.WriteLine(result);// True2️⃣ 定位符表达式含义^字符串开始$字符串结束\b单词边界\B非单词边界示例匹配以 S 开头的单词stringtextA Thousand Splendid Suns;MatchCollectionmatchesRegex.Matches(text,\bS\S*);foreach(Matchmatchinmatches){Console.WriteLine(match.Value);}输出Splendid Suns3️⃣ 量词限定符表达式含义*0次或多次1次或多次?0或1次{n}n次{n,}至少n次{n,m}n到m次示例匹配手机号stringpattern^1\d{10}$;四、分组与捕获核心重点1️⃣ 普通分组(\w)示例stringtextone two;stringpattern(\w)\s(\w);stringresultRegex.Replace(text,pattern,$2 $1);Console.WriteLine(result);// two one2️⃣ 命名分组推荐使用(?namepattern)示例stringtext2025-03-04;stringpattern(?year\d{4})-(?month\d{2})-(?day\d{2});MatchmatchRegex.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}示例stringinput1851 1999 1950 1905 2003;stringpattern(?19)\d{2}\b;foreach(MatchmatchinRegex.Matches(input,pattern)){Console.WriteLine(match.Value);}输出99 50 05六、实战案例 案例1去除多余空格stringinputHello World ;stringresultRegex.Replace(input,\s, );Console.WriteLine(result); 案例2验证邮箱stringpattern^[\w\.-][\w\.-]\.\w$; 案例3提取HTML标签内容stringpatterntitle(.*?)/title;⚠️ 注意复杂 HTML 不建议用正则建议使用 HTML 解析器。 案例4验证身份证号简单版stringpattern^\d{17}[\dX]$;七、性能优化建议高级开发者必看1️⃣ 预编译正则RegexregexnewRegex(pattern,RegexOptions.Compiled);适用于高频调用场景。2️⃣ 使用静态缓存privatestaticreadonlyRegexphoneRegexnewRegex(^1\d{10}$,RegexOptions.Compiled);避免重复创建对象。3️⃣ 避免灾难性回溯问题示例(a)解决方法使用非贪婪模式使用原子组(?...)限制量词范围八、常见坑位总结错误说明忘记使用 字符串转义错乱.* 贪婪匹配过多应使用 .*?正则写得过长建议拆分逻辑复杂 HTML 用正则容易翻车九、什么时候不该用正则复杂 HTML/XML 解析JSON 解析复杂业务规则判断正则适合做✔ 字符串校验✔ 模式匹配✔ 批量替换✔ 日志分析十、总结C# 正则表达式核心掌握五点字符类量词分组断言替换建议学习路径基础语法 → 分组 → 断言 → 实战 → 性能优化结语正则表达式不是洪水猛兽而是一把利器。写得好是优雅。写得烂是灾难。建议✔ 多写小例子练习✔ 善用在线调试工具✔ 养成写注释习惯 关注我持续分享 C# 实战技巧、代码示例 技术干货