C# 正则表达式常用的符号和模式解析(最新推荐)

C# 正则表达式常用的符号和模式解析(最新推荐)

简介

正则表达式是面向“字符”模式的,由字符组成的一种检索模式。在C#中,对正则表达式有很好的支持,我们可以使用System.Text.RegularExpressions.Regex类进行正则表达式的匹配和操作。

虽然正则表达式的语法看似复杂,但是当你掌握了其中的一些常用的符号,你会发现正则表达式变得简单易用。下面将为大家详细讲解C#正则表达式常用的符号和模式解析。

常用符号

下面是常用的正则表达式符号:

符号 解释
\ 转义字符
^ 行的开头
$ 行的结尾
. 除换行符外的任何字符
* 0个或多个前面的表达式
+ 1个或多个前面的表达式
? 0个或1个前面的表达式
{n} 正好n次前面的表达式
{n,} 至少n次前面的表达式
{n,m} n到m次前面的表达式
[] 字符集合
[^ ] 否定字符集合

### 转义字符 \

转义字符\是正则表达式中的一个重要符号。如果你想插入元字符本身,你可以使用转义字符\。例如,如果你想查找“abc+”字符串中的“+”,你可以使用如下的正则表达式:

string pattern = "abc\\+";

行的开头 ^ 和行的结尾 $

如果你想匹配以某个字符开头的字符串或者以某个字符结尾的字符串,你可以使用行的开头^和行的结尾$。例如,如果你想匹配以“http”开头的链接,你可以使用如下的正则表达式:

string pattern = "^http";

类似地,如果你想匹配以“.com”结尾的链接,你可以使用如下的正则表达式:

string pattern = ".com$";

任意字符 .

点号.是正则表达式中另一个重要的符号,它可以匹配除了换行符之外的任何字符。例如,如果你想查找“ab”后面的任意字符,你可以使用如下的正则表达式:

string pattern = "ab.";

0个或多个 *,1个或多个 + 和0个或1个 ?

星号、加号+和问号?是三个常用的量词符号。星号表示0个或多个前面的表达式,加号+表示1个或多个前面的表达式,问号?表示0个或1个前面的表达式。例如,如果你想匹配任意数量的a字符,你可以使用如下的正则表达式:

string pattern = "a*";

如果你想匹配任意数量的b字符,但是至少要有一个b字母,你可以使用如下的正则表达式:

string pattern = "b+";

如果你想匹配字符串“aba”和“ab”,你可以使用如下的正则表达式:

string pattern = "aba?";

准确数量 {}

如果你想匹配一个数字或字符的固定次数,你可以使用大括号{}。其中{n}表示正好n次前面的表达式,{n,}表示至少n次前面的表达式,{n,m}表示n到m次前面的表达式。

例如,如果你想匹配10个a字符,你可以使用如下的正则表达式:

string pattern = "a{10}";

字符集合 []

字符集合使用中括号[]括起来,用来匹配一组中的任意一个字符。例如,如果你想匹配小写字母a、b或c,你可以使用如下的正则表达式:

string pattern = "[abc]";

否定字符集合 [^ ]

否定字符集合使用中括号[]和 ^ 符号一起使用,用来匹配不属于字符集合中的任何一个字符。例如,如果你想匹配除了小写字母a、b和c之外的任何字符,你可以使用如下的正则表达式:

string pattern = "[^abc]";

示例说明

接下来,将演示两个示例来让你了解正则表达式的运用。

示例1:验证密码强度

假设现在需要验证密码强度,要求密码必须包含至少一个数字、一个大写字母和一个特殊符号。

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        Console.Write("请输入密码:");
        string password = Console.ReadLine();

        bool isStrongPassword = Regex.IsMatch(password, @"^(?=.*\d)(?=.*[A-Z])(?=.*[!@#$%^&*()_+])[A-Za-z\d!@#$%^&*()_+]{8,}$");

        if (isStrongPassword)
        {
            Console.WriteLine("密码强度符合要求!");
        }
        else
        {
            Console.WriteLine("密码强度过弱,请重新输入!");
        }
    }
}

在上面的示例中,使用了正则表达式^(?=.*\d)(?=.*[A-Z])(?=.*[!@#$%^&*()_+])[A-Za-z\d!@#$%^&*()_+]{8,}$来验证密码。这个表达式意思是:

  • (?=.*\d)表示密码中必须包含至少一个数字;
  • (?=.*[A-Z])表示密码中必须包含至少一个大写字母;
  • (?=.*[!@#$%^&*()_+])表示密码中必须包含至少一个特殊符号;
  • [A-Za-z\d!@#$%^&*()_+]表示密码可以使用大小写字母、数字和一些特殊符号组成;
  • {8,}表示密码的长度至少为8位。

示例2:搜索文本中的电话号码

假设现在有一个字符串文本,我们需要从中搜索电话号码。

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string text = "我的电话号码是:13612345678,你的电话号码是:13887654321。请尽快联系我。";

        MatchCollection matches = Regex.Matches(text, @"\d{11}");

        Console.WriteLine("搜索到的电话号码如下:");
        foreach (Match match in matches)
        {
            Console.WriteLine(match.Value);
        }
    }
}

在上面的示例中,使用了正则表达式\d{11}来搜索电话号码。这个表达式意思是,匹配11个数字。

结论

通过以上的讲解和示例,相信大家已经掌握了正则表达式在C#中的应用。正则表达式虽然看上去稍微有一些难度,但是掌握了一些常用的符号之后,就变得简单易懂。多加练习,相信你会成为正则表达式的高手。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 正则表达式常用的符号和模式解析(最新推荐) - Python技术站

(0)
上一篇 2023年6月6日
下一篇 2023年6月6日

相关文章

  • Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容

    Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容 在 Linux 系统中,我们可以使用 node.js 来提取 Word(doc/docx) 及 PDF 文本的内容。本攻略将介绍如何使用 node.js 提取 Word(doc/docx) 及 PDF 文本的内容,并提供两个示例说明。 步骤1:安装依赖 在 Linux 系统…

    C# 2023年5月17日
    00
  • 解析Silverlight调用WCF/Rest异常的解决方法

    解析Silverlight调用WCF/Rest异常的解决方法。下面我们来一步步讲解。 问题描述 在使用Silverlight调用WCF/Rest服务时,可能会遇到各种异常错误,比如: System.ServiceModel.CommunicationException System.ServiceModel.FaultException System.Net…

    C# 2023年5月15日
    00
  • python接口自动化(十六)–参数关联接口后传(详解)

    Python接口自动化–参数关联接口后传 在接口自动化测试中,有时需要在一个接口的返回结果中提取某些参数,并将这些参数传递给后续的接口。这个过程称为参数关联。本攻略将介绍如何在 Python 接口自动化测试中实现参数关联接口后传。 参数关联 参数关联是指在一个接口的返回结果中提取某些参数,并将这些参数传递给后续的接口。参数关联通常用于测试场景中,例如登录接…

    C# 2023年5月17日
    00
  • 深入浅出掌握Unity ShaderLab语法基础

    请听我详细讲解“深入浅出掌握Unity ShaderLab语法基础”的完整攻略。 一、ShaderLab语法基础概述 ShaderLab是Unity中用于编写着色器的语言,它基于CG语言编写,同时又封装了一些常用的函数和数据结构,使得着色器开发变得容易而高效。在使用ShaderLab编写着色器时,需要定义一个合法的Shader程序,并且指定使用哪种渲染方式。…

    C# 2023年6月3日
    00
  • C# WebApi 异常处理解决方案

    下面是关于C# WebApi异常处理的完整攻略: 1. 异常分类 程序完成预期业务逻辑,但无法继续执行下去,抛出了异常,如空引用异常、下标越界异常等。 业务逻辑处理不符合预期或不符合要求,可以抛出自定义异常。 2. 异常处理方案 通过自定义过滤器来实现统一的异常处理。 2.1 自定义Exception类 首先定义一个自定义的异常类,需要继承自Exceptio…

    C# 2023年5月14日
    00
  • C#byte数组传入C操作方法

    讲解“C# byte数组传入C操作方法”的完整攻略,可以分为以下五个部分: 准备C语言函数 编写C#代码声明要使用的C语言函数 封装C#数组,转换为适合C语言的指针形式 调用C语言函数,将C#数组传入 获取C语言函数的返回结果 下面,我们详细介绍这五个部分。 准备C语言函数 首先,我们先准备一个C语言的函数,该函数接收一个byte类型的数组和数组的长度,对数…

    C# 2023年6月7日
    00
  • C# StringBuilder.Insert()方法: 在 StringBuilder 对象的指定位置插入一个字符串

    StringBuilder.Insert() 方法用于在指定索引位置插入指定的字符串或字符。它的语法如下: public StringBuilder Insert(int index, string value); public StringBuilder Insert(int index, char value); 其中,第一个参数 index 表示要在哪…

    C# 2023年4月19日
    00
  • C# 输出字符串到文本文件中的实现代码

    下面是在 C# 中输出字符串到文本文件中的实现代码攻略: 1. 创建文件并写入字符串 代码实现 using System.IO; // 定义字符串变量 string str = "hello world!"; // 创建一个文件流 FileStream fs = new FileStream("output.txt",…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部