【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://xiahunao.cn/news/2809861.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

淘宝京东1688实时API商品详情数据解析:获取市场最新趋势

实时API商品详情数据解析:获取市场最新趋势 在快速变化的商业环境中,实时数据成为企业把握市场动态和竞争优势的关键。特别是对于电商行业而言,实时API商品详情数据成为了获取市场最新趋势的重要工具。本文将深入探讨如何通过实时API商品详情…

HTTPS对HTTP的加密过程

1、HTTPS是在HTTP的基础上,引入了一个加密层(SSL),对数据进行保护,HTTP 是明文传输的(不安全,很可能会被运营商通过referer劫持,或者黑客通过修改链接来窃数据) 2、加密…

计网:动手尝试SMTP交互【利用Telnet发送邮件, 带图片】

文章目录 准备工作发送仅有ascii码的邮件发送图片附件后记 准备工作 1.如图,勾选telnet客户端 2.邮箱开启第三方登录服务 开启服务后,会给一个授权码。授权码是QQ邮箱用于登录第三方客户端/服务的专用密码,适用于登录以下服务:…

自定义el-upload 上传文件

前言 最近在做一个文件上传的功能&#xff0c;后端接口写好了、发现前端上传文件的页面不会写……&#xff08;我很笨的&#xff09;然后我就找啊找发现element有个组件是<el-upload/>能直接上传文件。我就想直接用拿来改改改成自己想要的&#xff0c;可是就是这样我花了…

银河麒麟操作系统安装Anaconda

下载 首先确认需要安装的版本 uname -maarch64https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?CM&OD 在上面网址中下载相应的版本 下载后&#xff0c;上传到服务器 安装 bash Anaconda3-2023.09-0-Linux-aarch64.sh 点击enter&#xff0c;继续 输入yes同意许…

MongoDB之客户端工具与核心概念及基本类型篇

MongoDB之客户端工具与核心概念及基本类型篇 文章目录 MongoDB之客户端工具与核心概念及基本类型篇1. MongoDB是什么?1. 关于MongoDB2. 相关客户端工具1. MongoDB Compass2. Studio 3T3. Navicat for MongoDB4. NoSQL Manager for MongoDB Professional 2.MongoDB相关概念2.1 …

苹果 CMS 大橙子 vfed 5.0优化版

大橙子模版算是在苹果 CMS 众多主题里&#xff0c;较为亮眼的一款了&#xff0c;主题简洁&#xff0c;功能众多&#xff0c;非常的齐全。 今天分享的就是大橙 5.0 版本模板&#xff0c;完美破解&#xff0c;自测无后门&#xff0c;无广告不影响任何功能体验性。下载地址&#…

恒峰-高压森林应急消防泵:守护绿色生命线

随着城市化进程的加快&#xff0c;森林覆盖率逐渐降低&#xff0c;人们对于森林资源的保护意识也在不断提高。然而&#xff0c;一旦发生森林火灾&#xff0c;将会给生态环境带来极大的破坏。因此&#xff0c;如何提高森林火灾的防治能力&#xff0c;成为了亟待解决的问题。而高…

Spring Boot Profiles简单介绍

Spring Boot application.properties和application.yml文件的配置 阅读本文之前&#xff0c;请先阅读上面的配置文件介绍。 Spring Boot Profiles是一个用于区分不同环境下配置的强大功能。以下是如何在Spring Boot应用程序中使用Profiles的详细步骤和代码示例。 1. 创…

HarmonyOS4.0系统性深入开发36 媒体查询(mediaquery)

媒体查询&#xff08;mediaquery&#xff09; 概述 媒体查询作为响应式设计的核心&#xff0c;在移动设备上应用十分广泛。媒体查询可根据不同设备类型或同设备不同状态修改应用的样式。媒体查询常用于下面两种场景&#xff1a; 针对设备和应用的属性信息&#xff08;比如显…

密码学及其应用(应用篇15)——0/1背包问题

1 问题背景 背包问题是一个经典的优化问题&#xff0c;在计算机科学和运筹学中有着广泛的应用。具体到你提到的这个问题&#xff0c;它是背包问题中的一个特例&#xff0c;通常被称为0/1背包问题。这里&#xff0c;我们有一系列的正整数 &#xff0c;以及一个正整数&#xff0c…

opengles 绘制图元 ——glDrawArrays() 相关API介绍 (十)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、opengles3.0 绘制图元介绍二、绘图图元 API 介绍1. glDrawArrays()1.1 glDrawArrays()函数原型1.2 GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN 三者的区别1.3 使用GL_TRIANGLES, G…

java-map集合的基本使用

一、HashMap集合 1.HashMap示意图 2.HashMap的特点 3.HashMap的常用方法 ①.put(K key, V value) 将键&#xff08;key&#xff09;/值&#xff08;value&#xff09;映射存放到Map集合中 public class Test {public static void main(String[] args) {HashMap<String, I…

【笔记】【电子科大 离散数学】 2.命题

文章目录 数理逻辑定义 命题定义不是命题的例子 原子命题和复合命题定义约定 命题联结词否定联结词定义例子真值表 合取联结词定义例子真值表 析取联结词定义例子 蕴含联结词定义例子真值表 等价联结词定义例子真值表 命题符号化及其应用速查表格优先级复合命题符号化布尔检索演…

【大数据】Flink SQL 语法篇(四):Group 聚合、Over 聚合

Flink SQL 语法篇&#xff08;四&#xff09;&#xff1a;Group 聚合、Over 聚合 1.Group 聚合1.1 基础概念1.2 窗口聚合和 Group 聚合1.3 SQL 语义1.4 Group 聚合支持 Grouping sets、Rollup、Cube 2.Over 聚合2.1 时间区间聚合2.2 行数聚合 1.Group 聚合 1.1 基础概念 Grou…

【汽车电子】万字详解汽车标定与XCP协议

XCP协议基础 文章目录 XCP协议基础一、引言1.1 什么是标定1.2 什么时候进行标定1.3 标定的意义 二、XCP协议简介2.1 xcp简介2.2 XCP如何加快开发过程&#xff1f;2.3 XCP的主要作用 三、XCP工作过程3.1 工作过程3.2 通讯模型3.3 测量与标定 四、XCP报文解析4.1 数据包报文格式4…

vue基础操作(vue基础)

想到多少写多少把&#xff0c;其他的想起来了在写。也写了一些css的 input框的双向数据绑定 html <input value"123456" type"text" v-model"account" input"accou" class"bottom-line bottom" placeholder"请输入…

pytorch -- torch.nn下的常用损失函数

1.基础 loss function损失函数&#xff1a;预测输出与实际输出 差距 越小越好 - 计算实际输出和目标之间的差距 - 为我们更新输出提供依据&#xff08;反向传播&#xff09; 1. L1 torch.nn.L1Loss(size_averageNone, reduceNone, reduction‘mean’) 2. 平方差&#xff08;…

探索水下低光照图像检测性能,基于YOLOv6全系列【n/s/m/l】参数模型开发构建海底生物检测识别分析系统

底这类特殊数据场景下的检测模型开发相对来说比较少&#xff0c;在前面的博文中也有一些涉及&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 试探索水下目标检测&#xff0c;基于yolov5轻量级系列模型n/s/m开发构建海底生物检测系统》 《基于YOLOv5C3CBAMCBAM注意力…

IAA增收如何更上一层楼?NetMarvel 4招让您致胜全球

成本上涨&#xff0c;收益收紧&#xff0c;IAA厂商的增收似乎越来越难走&#xff1f;但在重定向广告被玩得如火朝天的当下&#xff0c;IAA一定是持续增长的市场。广告主、品牌方的需求只会越来越多&#xff0c;你只要确保圈住真实用户&#xff0c;流量即变现是迟早的事。 海外…