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

小明 2025-05-02 20:18:05 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#】获取文本中的链接,通过正则表达式的方法获取以及优化兼容多种格式

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

The End
微信