详解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#二进制逆序方法详解 基础知识 一个二进制数可以看作是若干个二进制位的组合,每个二进制位的数值只有0和1两种可能。如下所示是一个8位二进制数: 10101010 在计算机中,二进制数通常被用来表示数据和信息,如图像、音频、视频等。因此,二进制数的操作与处理是计算机编程的基础之一。 逆序方法 在C#编程中,我们经常需要将一个二进制数逆序,也就是将其二进制位顺…

    C# 2023年5月15日
    00
  • c#中的泛型委托详解

    下面是对泛型委托在C#中的详细讲解及示例说明: 泛型委托的概念 泛型委托(Generic Delegate)是一个带有泛型参数的委托,具有良好的扩展性和通用性,可以适配各种需求,使代码更加简洁、灵活。在泛型委托的定义中,可以指定一个或多个泛型类型参数,可以用于引用任意返回值和参数的委托类型。 在C#中,使用Func<>和Action<&gt…

    C# 2023年6月1日
    00
  • C# URL短地址压缩算法及短网址原理解析

    下面是 “C# URL短地址压缩算法及短网址原理解析” 的完整攻略。 短网址原理解析 短网址,也称为短链接,是一种将网址进行短化以达到方便记忆和分享的方式。短网址一般由原始的URL地址经过一系列的转换算法生成,使其在不失去其唯一性的前提下更短。短网址的原理一般涉及通用字符编码、过程加盐、自增长等技术。 C# URL短地址压缩算法 下面是一种常见的URL短地址…

    C# 2023年6月8日
    00
  • 将ocx文件转换成C#程序引用的DLL文件的办法

    将OCX文件转换成C#程序引用的DLL文件的过程,是一个比较复杂的过程,需要使用一些专门的工具来实现。下面是一个完整的攻略,教你如何将OCX文件转换成C#程序引用的DLL文件。 1. 安装OCX转换工具 首先,你需要安装一个OCX转换工具。这里我们选择使用OCX to DLL转换工具(OCX2DLL)。 你可以在网上下载OCX2DLL工具,然后按照安装程序的…

    C# 2023年6月7日
    00
  • C# datagrid非常规方法实现添加合并列

    C# 的 Datagrid 是一个非常强大的控件,但是由于它的灵活性,有时候我们需要实现一些非常规的功能,例如实现添加合并列。下面是一份完整攻略。 步骤一:准备工作 在使用非常规方法实现添加合并列之前,我们需要先明确几件事情,分别是: 我们需要使用到 WPF 的 DataGrid 控件,而不是 WinForms 的 DataGridView 控件; 我们需要…

    C# 2023年6月6日
    00
  • 详解LINQ入门(下篇)

    下面我将详细讲解“详解LINQ入门(下篇)”的完整攻略。 一、LINQ基础 1.1 LINQ介绍 LINQ的全称是Language INtegrated Query,即语言集成查询,是微软在.NET Framework 3.5中引入的一项技术。它可以允许我们使用类SQL语句来操作各种数据源,包括XML文档、ADO.NET中的关系型数据库、Linq to SQ…

    C# 2023年6月1日
    00
  • ASP.NET MVC视图页使用jQuery传递异步数据的几种方式详解

    以下是“ASP.NET MVC视图页使用jQuery传递异步数据的几种方式详解”的完整攻略: 什么是ASP.NET MVC视图页使用jQuery传递异步数据 ASP.NET MVC视图页使用jQuery传递异步数据是一种机制,允许开发人员使用jQuery在MVC视图页传递异步数据。这种机制可以帮助开发人员更轻松地处理异步数据,并提高用户体验。 ASP.NET…

    C# 2023年5月12日
    00
  • C#开发windows服务实现自动从FTP服务器下载文件

    下面是详细说明: 一、前置条件 电脑上安装Visual Studio(建议版本大于2015)。 确保安装了.NET Framework 4及以上版本。 需要有一个FTP账号和FTP服务器。 二、创建Windows服务应用程序 1. 打开Visual Studio,点击“新建项目”; 2. 选择“Windows服务”类型,并起名为“FTPDownloadSer…

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