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, [email protected], 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的主机部分。可以根据自己的需求进行修改和扩展。

总结

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

相关推荐
MasterNeverDown2 小时前
在C#中的乐观锁和悲观锁
c#·并发·
一 乐2 小时前
民宿|基于java的民宿推荐系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·源码
全栈小52 小时前
【C#】Quartz.NET怎么动态调用方法,并且根据指定时间周期执行,动态配置类何方法以及Cron表达式,有请DeepSeek
c#·.net·quartz.net·deepseek
美林数据Tempodata3 小时前
大模型驱动数据分析革新:美林数据智能问数解决方案破局传统 BI 痛点
数据库·人工智能·数据分析·大模型·智能问数
野槐4 小时前
node.js连接mysql写接口(一)
数据库·mysql
Zzzone6834 小时前
PostgreSQL日常维护
数据库·postgresql
chxii4 小时前
1.13使用 Node.js 操作 SQLite
数据库·sqlite·node.js
冰刀画的圈4 小时前
修改Oracle编码
数据库·oracle
这个胖子不太裤4 小时前
Django(自用)
数据库·django·sqlite
麻辣清汤5 小时前
MySQL 索引类型及其必要性与优点
数据库·mysql