详解C# 中的正则表达式运用

详解C#中的正则表达式运用

什么是正则表达式?

正则表达式(Regular Expression)是一种用来描述、匹配特定字符集合的字符串。一般用来做文本处理和字符串匹配,包括但不限于文本查找、替换、分割、提取等。

正则表达式的语法

具体的正则表达式语法非常复杂,这里只介绍C#的正则表达式语法常用的部分。

  • 文本匹配

  • 匹配单个字符:可以直接使用字符本身表示。例如,匹配字符'A'可以写作'A'。

  • 点“.”:表示匹配任何一个除了换行符外的字符。

  • 元字符:是指由特定字符组成的字符串,有特殊的含义。例如:'\d'表示匹配任意一个数字字符(0-9),'\s' 表示匹配任意一个空白符,'\w' 表示匹配任意一个字母或数字。需要注意的是,由于元字符可能与转义字符重复,所以需要使用双反斜杠('\\')来表示。

  • 重复匹配

  • 星号“”:表示前一个字符重复匹配零次或多次。例如:'abc' 匹配 "ac"、"abc"、"abbc"、"abbbc" 以及等等。

  • 加号“+”:表示前一个字符重复匹配一次或多次。例如:'ab+c' 匹配"abc"、"abbc"、"abbbc" 以及等等。

  • 问号“?”:表示前一个字符重复匹配零次或一次。例如:'ab?c' 匹配"ac"、"abc"。

  • 位置匹配

  • 插入符号“^”:表示匹配此符号后的字符位置是否在字符串的开头。

  • 美元符号“$”:表示匹配此符号前的字符位置是否在字符串的结尾。

  • 分组匹配

  • 用小括号“()”表示分组,其中可以再嵌套其他元字符。例如:“(\d{3})[ \-]?(\d{4})” 表示匹配3位数字后,如果后面有一个空格或横杠则忽略,再匹配四位数字。(这里的“?”表示可选)

C#中的正则表达式实现方式

.NET中提供了System.Text.RegularExpressions命名空间,用于提供正则表达式匹配支持。该命名空间提供Regex类,可以使用静态方法Match和MatchCollection对正则表达式进行搜索和匹配。

下面是一个使用C#正则表达式匹配电话号码的示例代码:

using System.Text.RegularExpressions;

...

string input = "我的电话号码是010-12345678。";
string pattern = "(\\d{3})[ \\-]?(\\d{4})";
Match match = Regex.Match(input, pattern);
if (match.Success)
{
    Console.WriteLine("匹配结果是:{0}", match.Value);
}

以上代码会将输入字符串中符合电话号码格式的部分匹配出来并输出。其中,正则表达式中的" (\d{3})"表示匹配任意三个数字,"[ \-]?"表示忽略任一空格或横杠(可选)," (\d{4})"表示匹配任意四个数字。

正则表达式的应用

正则表达式在软件开发中应用广泛,常见的应用场景包括但不限于:

  1. 表单输入合法性校验。例如,对邮箱、电话号码、身份证号码等输入进行优化和控制。

  2. 字符串筛选和检索。例如,通过正则表达式将网页中的电子邮件地址提取出来。

下面是两条更为具体的示例:

示例一:用户名输入校验

实现对用户名形式的校验,只允许输入字母和数字,长度在6-16个字符之间,首字符为字母。


分解该校验需求:

  • 用户名只允许输入字母和数字
^[a-zA-z0-9]+$
  • 长度在6-16个字符之间
^.{6,16}$
  • 首字符为字母
^[a-zA-z]+.*

整体的正则表达式:

^[a-zA-z]+[a-zA-z0-9]{5,15}$

示例二:截取Url中的参数

实现从Url中截取参数并分析其值。


例如:对于url "http://www.example.com/search.php?q=keyword&limit=10",我们需要截取出其参数q和limit的值。

实现正则表达式:

(?<=\\?|\\&)(?<name>[^=]+)=(?<value>[^&]+)

上面的正则表达式使用了正则表达式的零宽断言,用来匹配问号或者&符号后面的变量名name和变量值value。

string url = "http://www.example.com/search.php?q=keyword&limit=10";
string pattern = "(?<=\\?|\\&)(?<name>[^=]+)=(?<value>[^&]+)";
MatchCollection matches = Regex.Matches(url, pattern);
foreach (Match match in matches)
{
    Console.WriteLine("{0} = {1}", match.Groups["name"], match.Groups["value"]);
}

这段代码可以输出:

q = keyword
limit = 10

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解C# 中的正则表达式运用 - Python技术站

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

相关文章

  • C#根据日期计算星期几的实例代码

    下面我来详细讲解一下“C#根据日期计算星期几的实例代码”的完整攻略。 1. 实现思路 要计算某个日期是星期几,可以使用.NET Framework中的DateTime类中的DayOfWeek属性,该属性返回一个枚举类型的星期几。然而使用DayOfWeek属性是有一些限制的,它只允许你输入一个DateTime类型的日期对象。如果你想要输入一个简单的日期字符串,…

    C# 2023年6月1日
    00
  • ASP.Net MVC 布局页、模板页使用方法详细介绍

    下面我将详细讲解“ASP.Net MVC布局页、模板页使用方法详细介绍”的完整攻略,过程中将包含两个示例的说明。 ASP.Net MVC布局页 ASP.Net MVC布局页用于定义网站的整体布局,例如头部、底部、导航等元素,以及将内容区域占据的html、css进行分离。 具体实现步骤如下: 创建一个布局页 在MVC项目的Views/Shared文件夹下,右键…

    C# 2023年5月31日
    00
  • C#实现异步的常用方式总结

    让我来详细讲解一下“C#实现异步的常用方式总结”的完整攻略。 异步编程简介 在 C# 中,我们使用异步编程来执行长时间运行的操作,以便不会阻塞主线程。异步编程可以在不使用多线程的情况下实现并发性,并且能够改善应用程序的响应性能。 C# 实现异步的常用方式 C# 实现异步的常用方式主要有以下方式: 1.使用 Task 和 async/await Task 和 …

    C# 2023年5月15日
    00
  • C#实现修改系统时间的方法

    C#实现修改系统时间的方法 介绍 C#是一种广泛使用的面向对象编程语言,其提供了多种实现操作系统相关功能的方式。本文将介绍如何使用C#编写程序以修改系统时间。 步骤 1. 引用命名空间 在C#中,需要引用System和System.Runtime.InteropServices这两个命名空间以实现操作系统相关功能。使用以下代码段引用这两个命名空间: usin…

    C# 2023年6月7日
    00
  • C#实现获取不同对象中名称相同属性的方法

    获取不同对象中名称相同属性的方法,可以通过反射实现。以下是C#实现该方法的步骤和示例说明: 步骤 步骤一:获取对象类型 使用GetType()方法获取对象的类型,返回Type类型的实例。 Type objectType = objectInstance.GetType(); 步骤二:获取属性信息 使用GetProperties()方法获取对象的所有属性,返回…

    C# 2023年5月31日
    00
  • C#设计模式之工厂模式

    C#设计模式之工厂模式 什么是工厂模式? 工厂模式是指为创建对象定义一个接口,让子类决定实例化哪一个类。工厂模式让一个类的实例化延迟到其子类。使用工厂模式我们可以让对象的创建和实现分离,当我们需要增加一种新的对象时,我们只需要添加一个新的具体的类和它相应的工厂类就可以了,不会对原来的代码产生太多的影响。 工厂模式的三种形式 简单工厂模式 工厂方法模式 抽象工…

    C# 2023年6月1日
    00
  • .net core利用PdfSharpCore操作PDF实例教程

    .NET Core利用PdfSharpCore操作PDF实例教程 简介 PdfSharpCore是一个.NET Core实现的PDF库,它提供基本的PDF操作,如创建、编辑和添加内容到PDF文件等。在本教程中,我们将使用PdfSharpCore来创建、编辑和保存PDF文件。 安装 我们通过NuGet安装PdfSharpCore。可以在Visual Studi…

    C# 2023年6月3日
    00
  • 解读ASP.NET密码强度验证代码实例分享

    下面是“解读ASP.NET密码强度验证代码实例分享”的完整攻略: 一、引言 在开发 Web 应用程序中,密码必须经过加密以确保用户数据的安全。然而,如果密码过于弱,则会增加被破解的风险。ASP.NET 提供了一种简单的密码强度验证机制,可以帮助开发人员确保密码强度满足最低要求。 二、密码强度验证 密码强度验证可以通过 RegularExpressionVal…

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