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

总结

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

相关推荐
想回家的一天37 分钟前
Go1.25的源码分析-src/runtime/runtime1.go(GMP)
数据库·redis·缓存
用户8356290780511 小时前
C# 从 PDF 提取图片教程
后端·c#
阿里云大数据AI技术1 小时前
鹰角网络基于阿里云EMR Serverless StarRocks的实时分析工程实践
数据库·数据分析
久笙&2 小时前
对象存储解决方案:MinIO 的架构与代码实战
数据库·python·架构
码luffyliu2 小时前
MySQL:MVCC机制及其在Java秋招中的高频考点
java·数据库·mysql·事务·并发·mvcc
水涵幽树2 小时前
MySQL 时间筛选避坑指南:为什么格式化字符串比较会出错?
数据库·后端·sql·mysql·database
PythonicCC2 小时前
Django中的MVC和MVT模式
数据库·django·mvc
格林威3 小时前
Baumer高防护相机如何通过YoloV8深度学习模型实现网球运动员和网球速度的检测分析(C#代码UI界面版)
人工智能·深度学习·数码相机·yolo·ui·c#·视觉检测
hixiong1234 小时前
用OpencvSharp编写视频录制工具
opencv·c#·音视频
张飞洪5 小时前
C# 13 与 .NET 9 跨平台开发实战:基于.NET 9 与 EF Core 9 的现代网站与服务开发
开发语言·c#·.net