C#开发基础之100个常用的C#正则表达式

前言

正则表达式是处理字符串的强大工具,特别是在文本搜索、替换和验证中。本文将100个常用的C#正则表达式进行分类,以帮助我们更快速地找到适合的正则表达式解决方案。

1. 基础匹配

这些正则表达式用于匹配一些基本的字符或字符串模式。

  • 匹配任意字符 : string pattern = ".";
  • 匹配任意空白字符 : string pattern = @"\s";
  • 匹配任意非空白字符 : string pattern = @"\S";
  • 匹配任意数字字符 : string pattern = @"\d";
  • 匹配任意非数字字符 : string pattern = @"\D";
  • 匹配任意字母数字字符 : string pattern = @"\w";
  • 匹配任意非字母数字字符 : string pattern = @"\W";
  • 匹配任意字母字符 : string pattern = @"[a-zA-Z]";
  • 匹配任意小写字母 : string pattern = @"[a-z]";
  • 匹配任意大写字母 : string pattern = @"[A-Z]";

2. 数字处理

这些正则表达式用于匹配和处理数字相关的字符串。

  • 匹配单个数字 : string pattern = @"\d";
  • 匹配多位数字 : string pattern = @"\d+";
  • 匹配十六进制数字 : string pattern = @"\b[0-9A-Fa-f]+\b";
  • 匹配包含数字的字符串 : string pattern = @"\b\d+\b";
  • 匹配前导零的数字 : string pattern = @"\b0*(\d+)\b";
  • 匹配负数 : string pattern = @"^-?\d+$";

3. 字符串匹配

这些正则表达式用于匹配特定类型的字符串,如以某个字符开头或结尾的字符串。

  • 匹配以特定字符开头的字符串 : string pattern = @"^prefix";
  • 匹配以特定字符结尾的字符串 : string pattern = @"suffix$";
  • 匹配带连字符的单词 : string pattern = @"\b\w+-\w+\b";
  • 匹配以字母开头的字符串 : string pattern = @"^[a-zA-Z]";
  • 匹配以字母结尾的字符串 : string pattern = @"[a-zA-Z]$";
  • 匹配带点的字符串 : string pattern = @"\w+\.\w+";

4. 特殊字符处理

这些正则表达式用于处理字符串中的特殊字符和标记。

  • 匹配标点符号 : string pattern = @"[.,!?;:'""]";
  • 匹配XML或HTML中的属性 : string pattern = @"(\w+)\s*=\s*(['""]?)(.*?)\2";
  • 匹配成对的括号 : string pattern = @"\([^()]*\)";
  • 匹配成对的HTML标签 : string pattern = @"<(\w+)>.*?</\1>";
  • 匹配XML标签 : string pattern = @"<[^>]+>";

5. 空白字符处理

这些正则表达式用于处理字符串中的空白字符。

  • 匹配单个空白字符 : string pattern = @"\s";
  • 匹配一个或多个空白字符 : string pattern = @"\s+";
  • 匹配行首的空白字符 : string pattern = @"^\s";
  • 匹配行尾的空白字符 : string pattern = @"\s$";
  • 匹配首尾带空格的字符串 : string pattern = @"^\s+|\s+$";
  • 匹配具有多个空格的行 : string pattern = @"^\s+.*\s+$";

6. 行和段落处理

这些正则表达式适用于多行文本的处理,如匹配特定的行或段落。

  • 匹配整行文本 : string pattern = @"^.*$";
  • 匹配行首的字符串 : string pattern = @"^prefix";
  • 匹配行尾的字符串 : string pattern = @"suffix$";
  • 匹配多行字符串中的最后一行 : string pattern = @"(\n.*)?$";
  • 匹配非空行 : string pattern = @"\S";

7. 复杂模式匹配

这些正则表达式处理更为复杂的匹配模式,如重复字符或成对符号。

  • 匹配重复的字符 : string pattern = @"(.)\1";
  • 匹配中间带空格的字符串 : string pattern = @"\w+\s+\w+";
  • 匹配具有相同字符的连续单词 : string pattern = @"(\b\w+\b)\s+\1";

8. 日期和时间

这些正则表达式专门用于处理日期和时间格式。

  • 匹配日期格式(dd/mm/yyyy) : string pattern = @"^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/\d{4}$";

9. 特定语言字符

这些正则表达式用于处理特定语言的字符,如汉字或双字节字符。

  • 匹配双字节字符(比如中文) : string pattern = @"[^\x00-\xff]";
  • 匹配汉字字符 : string pattern = @"[\u4e00-\u9fa5]";

10. 文件和路径处理

这些正则表达式用于处理文件路径、URL等格式。

  • 匹配URL的主机部分 : string pattern = @"^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n]+)";
  • 匹配URL的路径部分 : string pattern = @"(?:https?:\/\/)?(?:www\.)?[^\/]+(\/[^#?]+)";

示例代码

示例代码,演示如何在C#中使用这些正则表达式。

csharp 复制代码
using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string text = "Example text with some special patterns: 123-456, abc@def.com, http://example.com";

        // 匹配带连字符的单词
        string pattern = @"\b\w+-\w+\b";
        MatchCollection matches = Regex.Matches(text, pattern);

        Console.WriteLine("匹配带连字符的单词:");
        foreach (Match match in matches)
        {
            Console.WriteLine(match.Value);
        }

        // 匹配URL的主机部分
        pattern = @"^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n]+)";
        Match matchUrl = Regex.Match(text, pattern);

        Console.WriteLine("\n匹配URL的主机部分:");
        Console.WriteLine(matchUrl.Value);
    }
}

在这个示例中,我们展示了如何使用正则表达式来匹配带连字符的单词和URL的主机部分。可以根据自己的需求进行修改和扩展。

总结

通过对这些正则表达式进行分类,我们可以更方便地找到适合当前需求的正则表达式。在实际开发中,正则表达式不仅可以简化代码,还能提高程序的执行效率和可维护性。

相关推荐
阿华的代码王国12 分钟前
MySQL ------- 索引(B树B+树)
数据库·mysql
Hello.Reader40 分钟前
StarRocks实时分析数据库的基础与应用
大数据·数据库
执键行天涯42 分钟前
【经验帖】JAVA中同方法,两次调用Mybatis,一次更新,一次查询,同一事务,第一次修改对第二次的可见性如何
java·数据库·mybatis
yanglamei19621 小时前
基于GIKT深度知识追踪模型的习题推荐系统源代码+数据库+使用说明,后端采用flask,前端采用vue
前端·数据库·flask
friklogff1 小时前
【无标题】云端之C#:全面解析6种云服务提供商的SDK
开发语言·flask·c#
工作中的程序员1 小时前
ES 索引或索引模板
大数据·数据库·elasticsearch
严格格1 小时前
三范式,面试重点
数据库·面试·职场和发展
微刻时光2 小时前
Redis集群知识及实战
数据库·redis·笔记·学习·程序人生·缓存
单字叶2 小时前
MySQL数据库
数据库·mysql
mqiqe2 小时前
PostgreSQL 基础操作
数据库·postgresql·oracle