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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/492584.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

邮件营销神器Focussend,轻松实现1美元转化72美元的营销高回报!

随着社交媒体营销逐渐成为主流,一家名为Focussend的公司却在邮件营销领域崭露头角。成立于2009年,Focussend经过尝试综合营销后,选择进入古早但高回报的邮件营销市场。目前,该公司在跨境平台中排名靠前,服务着上万名中…

项目管理基本要素--项目、项目集、项目组合

本文描述从事项目管理和了解项目管理领域所需的基本要素,词汇定义来自于《项目知识管理体系》(PMBOK指南)第六版,仅作个人学习使用,任何对此文章的引用,应当说明源出处,不得用于商业用途。 如有侵权、联系速删 文章目录…

Linux Debian12安装fcitx5中文拼音输入法

我使用Debian系统已经4年了,我常在Debian系统上安装ibus google拼音输入法,但是有时这个输入法会卡死,停上几分钟后又恢复正常了,经常被这个困扰。不过在Debian 11或Debian12中我们可以使用fcitx5中文拼音输入法了&am…

用c# 自己封装的Modbus工具类库源码

前言 Modbus通讯协议在工控行业的应用是很多的,并且也是上位机开发的基本技能之一。相关的类库也很多也很好用。以前只负责用,对其并没有深入学习和了解。前段时间有点空就在这块挖了挖。想做到知其然还要知其所以然。所以就有了自己封装的Modbus工具类库…

linux僵尸进程

僵尸进程(Zombie Process)是指在一个进程终止时,其父进程尚未调用wait()或waitpid()函数来获取该进程的终止状态信息,导致进程的资源(如进程表中的记录)仍然保留在系统中的一种状态。 当一个进程结束时&am…

SpreadJS+vue3练手使用

SpreadJS的练手使用 // 首先在 package.json 这个文件里{"name": "app-admin","private": true,"version": "0.0.0","type": "module","scripts": {"dev": "vite",&quo…

SpringBootRest服务调用

目录 RestTemplate 依赖配置 自定义RestTemplate webCilent 依赖配置 自定义webCilent springboot中有两种方式实现Rest远程服务调用,分别是RestTemplate与webCilent。下面分别介绍一下这两种方式。 RestTemplate 依赖配置 RestTemplate是Spring Framework提供的…

DeepMind基础世界模型Genie:一张草图即为一个世界,通用AI智能体要来了?

一张草图即为一个世界!Google DeepMind 推出了首个以无监督方式从未经标注的互联网视频中训练而来的生成交互环境模型——Genie。该模型可以通过文本、合成图像、照片甚至草图来生成无数种可玩(动作可控)的虚拟世界。 据介绍,Geni…

Python爬虫-爬取豆瓣高分电影封面

本文是本人最近学习Python爬虫所做的小练习。如有侵权,请联系删除。 页面获取url 代码 import requests import os import re# 创建文件夹 path os.getcwd() /images if not os.path.exists(path):os.mkdir(path)# 获取全部数据 def get_data():# 地址url "…

护眼台灯哪个牌子好?五大品牌,无广测评公开

自从护眼台灯出现之后,市场的热度就很高,许多家长都会给孩子准备上一盏护眼台灯,而随着护眼台灯越来越受欢迎,市面上品牌逐步越来越多。其中一些品牌为了压低价格,在选料和做工方面都很差,甚至会对视力造成…

3dmax怎么进行渲染通道图?

1、登录渲染100客户端,并找到优化工具箱,点击开启工具箱。 2、启动3Dmax,找到渲染100插件菜单,同样点击“开启工具箱”。 3、在“渲染菜单”里选择“通道渲染”。根据需求“勾选AO”和“色彩通道”,设置好文件输出路径…