欢迎来到《小5讲堂》
大家好,我是全栈小5。
这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解,
特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!
目录
前言链接匹配提取正则表达式一优化正则 正则表达式概念1.匹配数字2.匹配字母3.匹配空白字符4.匹配特定字符5.匹配重复次数6.匹配选择项7.匹配起始和结束位置 相关文章
前言
在看CSDN平台上的私信时,PC端是如何识别到文本链接的,
后来想想,应该是在录入时就已经识别并按链接方式保存,所以发送和显示私信文本时就是一个链接。
处于这个好奇,假如是一个纯文本情况下又如何识别,博主尝试通过正则表达式进行识别出来。
链接匹配提取
通过一定规则和规律进行文本提取,第一个比较明显的规律就是链接第一是含有http协议
正则表达式一
代码 string pattern = @"(https?://[^\s]+)"; Regex regex = new Regex(pattern); MatchCollection matches = regex.Matches(item.content); foreach (Match match in matches) { Console.WriteLine(match.Value); }
效果上面代码还是不够准确的,并且必须是识别了https协议开头的链接,比如下面这个文本就不支持了
优化正则
优化后的正则表达式
((https?|ftp|file)?/[-A-Za-z0-9+&@#/%?=_|!:,.;]*[-A-Za-z0-9+&@#/%=_|])
string content = @"我刚创作了一篇博文:《【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),代码实现篇》http://t.csdnimg.cn/j1M12,快来支持我吧!";string pattern = @"((https?|ftp|file):\/\/[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|])";Regex regex = new Regex(pattern);MatchCollection matches = regex.Matches(content);foreach (Match match in matches){ Console.WriteLine(match.Value);}
正则表达式概念
正则表达式是一种用来描述字符串匹配规则的强大工具。它可以用来在文本中搜索、匹配和替换符合特定模式的字符串。在 C# 中,你可以使用 System.Text.RegularExpressions 命名空间中的类来处理正则表达式。
下面是一些常用的正则表达式语法和模式示例:
1.匹配数字
\d 表示任意一个数字。例如,\d+ 可以匹配一个或多个连续的数字。
2.匹配字母
\w 表示任意一个字母或数字。例如,\w+ 可以匹配一个或多个连续的字母或数字。
3.匹配空白字符
\s 表示任意一个空白字符,例如空格、制表符、换行符等。
4.匹配特定字符
可以使用字符本身来匹配。例如,
abc 可以匹配由字母 “a”、“b” 和 “c” 组成的字符串。
5.匹配重复次数
使用 {} 来指定某个模式的重复次数。例如,a{3} 表示连续出现 3 次的字符 “a”。
6.匹配选择项
使用 | 来分隔多个选择项。例如,(apple|banana) 可以匹配 “apple” 或 “banana”。
7.匹配起始和结束位置
使用 ^ 表示字符串的开始位置,$ 表示字符串的结束位置。例如,^start 表示以 “start” 开头的字符串。
这只是正则表达式语法中的一小部分。
正则表达式还包含更多高级的模式和操作符,可以根据需要进行学习和使用。
相关文章
【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),代码实现篇
【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),流程描述篇
【C#】约瑟夫原理举例2个代码实现
【C#】List泛型数据集如何循环移动,最后一位移动到第一位,以此类推
【C#】获取文本中的链接,通过正则表达式的方法获取以及优化兼容多种格式
温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。