前言:正则表达式是一种匹配输入文本的模式。.Net 框架提供了允许这种匹配的正则表达式引擎。模式由一个或多个字符、运算符和结构组成。下来,让我们共同进入学习。
一、什么是正则表达式?
英文Regular Expression,是计算机科学的一个重要概念,它使用一种数学算法来解决计算机程序中的文本检索,匹配等问题。正则表达式语言是一种专门用于字符串处理的语言。在很多语言中都提供了对它的支持,C#也不例外,它可以帮我们解决下面的问题:
- 检索:通过正则表达式,从字符串中获取我们想要的部分。
- 匹配:判断给定的字符串是否符合正则表达式的过滤逻辑,你可以认为正则表达式表述了一个字符串的书写规范。
例如:我们可以使用正则表达式,判断用户输入的密码是否合法,判断用户输入的邮箱格式是否合法。
二、正则表达式的组成
-
正则表达式就是由普通字符以及特殊字符(元字符)组成的文字模式。该模式描述在查找文字主体时,待匹配的一个或多个字符串。
-
我们经常在正则表达式字符串前面加上@字符,这样不让编译器去解析其中的转义字符,而作为正则表达式的语法(元字符)存在。
三、元字符介绍
符号 | 含义 |
---|---|
^ | 定位字符串开始位置。 |
$ | 定位字符串结束位置。 |
. | 匹配除换行符之外的全部字符。 |
\w | 匹配字母、数字、下划线、汉字。 |
\W | 匹配除大小写字母,数字、下划线、汉字之外的。 |
\s | 匹配任意空白字符(包括换行符\n、回车符\r、制表符\t、垂直制表符\v、换页符\f)。 |
\S | \s的补集,除了\s之外的其余字符。 |
\d | 匹配0-9的数字。 |
\D | 匹配除了\d之外的字符。 |
\b | 单词(\w)与非单词之间的位置。 |
\B | 字符与字符之间的位置。 |
[alkj] | 表示多个元字符。重复零次或者多次。 |
[a-z] | 匹配从字符a至字符z的所有字符。 |
[^R] 或者 [^aps45sw] | [^R] 匹配除了R之外的所有字符,[^aps45sw]匹配aps45sw之外的所有字符。 |
{n} | 匹配前面的字符n次。n代表一个>=0的整数。 |
{n,} | n代表一个>=0的整数。 |
{n,m} | 匹配前面的字符n到m次 。n和m代表一个>=0的整数。 |
? | 重复0次或者一次。 |
+ | 重复一次或者多次。 |
* | 重复零次或者多次。 |
| | 或运算。 |
注意:当我们重复使用多个字符时,可以使用(){}进行分组限定,例如:(abcd){2}
详细介绍,请查看菜鸟教程:C# 正则表达式
四、Regex 类,方法使用
Regex类用于表示一个正则表达式,需要引用命名空间:System.Text.RegularExpressions
方法 | 描述 |
---|---|
public bool IsMatch( string input ) | 指示 Regex 构造函数中指定的正则表达式是否在指定的输入字符串中找到匹配项。 |
public bool IsMatch( string input, int startat ) | 指示 Regex 构造函数中指定的正则表达式是否在指定的输入字符串中找到匹配项,从字符串中指定的开始位置开始。 |
public static bool IsMatch( string input, string pattern ) | 指示指定的正则表达式是否在指定的输入字符串中找到匹配项。 |
public MatchCollection Matches( string input ) | 在指定的输入字符串中搜索正则表达式的所有匹配项。 |
public string Replace( string input, string replacement ) | 在指定的输入字符串中,把所有匹配正则表达式模式的所有匹配的字符串替换为指定的替换字符串。 |
public string[] Split( string input ) | 把输入字符串分割为子字符串数组,根据在 Regex 构造函数中指定的正则表达式模式定义的位置进行分割。 |