详解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# File.Exists(string path):判断指定路径的文件是否存在

    File.Exists(string path)方法是C#中的一个文件操作方法,其作用是判断指定路径的文件是否存在。在使用该方法时,需要传入一个字符串参数,表示要检查的文件的完整路径。 若文件存在,则返回true,反之则返回false。 使用该方法可以避免在进行文件操作时不必要的异常抛出,也可用于检查是否需要进行文件的创建或删除操作。 下面给出一些示例说明:…

    C# 2023年4月19日
    00
  • .NET Framework中定时器timer的单线程与多线程使用讲解

    .NET Framework中定时器timer的单线程与多线程使用讲解 什么是定时器timer 在 .NET Framework中,Timer 是一种计时器,用于定期执行一些操作。可以使用 Timer 指定在多长时间后执行一个操作。可用作定期检查磁盘驱动器、定期下载网页或文件,或定期脚本。Timer 可在 Windows.Forms、ASP.NET、WPF …

    C# 2023年6月3日
    00
  • WPF中使用WebView2控件的方法及常见问题

    下面是详细的“WPF中使用WebView2控件的方法及常见问题”的攻略。 什么是WebView2控件 WebView2控件是一个新的Web浏览器控件,用于在Windows应用程序中嵌入Web体验,具备所有现代Web浏览器的特性。 WebView2控件是使用Microsoft Edge浏览器的渲染引擎构建的。 WebView2控件的优势 相对于Windows自…

    C# 2023年5月15日
    00
  • LINQ教程之LINQ操作语法

    欢迎来到本站的LINQ教程,今天我们将学习LINQ操作语法,帮助您更好地理解和使用LINQ。 什么是LINQ操作语法 LINQ操作语法(LINQ Query Syntax)是一种使用类似于SQL语句的查询语法快速查询数据的方法。 它是LINQ的一部分,使C#和VB.NET开发人员能够轻松地使用LINQ。 LINQ操作语法允许开发人员快速、易读地创建查询,包含…

    C# 2023年6月1日
    00
  • C#编程读取文档Doc、Docx及Pdf内容的方法

    针对这个问题,我来详细讲解一下 “C#编程读取文档Doc、Docx及Pdf内容的方法” 的完整攻略。 问题背景 很多网站都需要解析文档内容来展示,但是文档的种类很多,而且格式各不相同,如Docx、Doc和PDF等。因此,需要在C#编程中编写一种方法来读取这些文档的内容。 解决方案 针对这个问题,我们可以使用以下两种方法来解决: 方法一:使用Microsoft…

    C# 2023年6月1日
    00
  • C# 实现颜色的梯度渐变案例

    这是一篇关于用C#实现颜色梯度渐变的攻略。在这个案例中,我们将会学习如何使用C#语言和.NET框架实现一个简单的颜色渐变程序。接下来,我们将会分别介绍这个程序的制作步骤和两个示例说明。 制作步骤 创建GUI程序 首先,我们要创建一个GUI程序,这里使用Windows Form应用程序来展示颜色梯度渐变效果。在Visual Studio中创建一个新的Windo…

    C# 2023年6月7日
    00
  • c#异步操作后台运行(backgroundworker类)示例

    下面我将详细讲解“C#异步操作后台运行(BackgroundWorker类)示例”的完整攻略,包括背景和示例说明: 背景 在C#开发中,我们经常会遇到需要在后台执行一些任务的情况,比如上传或下载文件、对大量数据进行计算和处理等。为了避免出现界面卡顿或者无响应的情况,我们往往采用异步操作来实现后台运行。 C#中提供了BackgroundWorker类来实现异步…

    C# 2023年6月1日
    00
  • Jquery上传插件 uploadify v3.1使用说明

    简介 uploadify是一个基于jQuery的多文件异步上传插件,可以提供灵活的文件上传功能。本文将详细介绍uploadify的使用方法和基本配置。 下载和引入 首先,需要下载uploadify插件,可以在官方网站http://www.uploadify.com/下载。下载后将js、css和swf文件放入相应目录,并在HTML文件中引入。 <link…

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