【C#】获取文本中的链接,通过正则表达式的方法获取以及优化兼容多种格式

欢迎来到《小5讲堂》
大家好,我是全栈小5。
这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解,
特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!

在这里插入图片描述

前言

在看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#】获取文本中的链接,通过正则表达式的方法获取以及优化兼容多种格式

温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。

  • 55
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈小5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值