C#中的正则表达式介绍
简介
正则表达式(RegularExpression)是一种用特殊符号和文本模式来描述字符串特征的表达式。正则表达式在程序中常用来匹配、查找及替换字符串中的某些部分。
正则表达式的基本语法
字符串匹配
在正则表达式中,使用普通字符匹配普通的字符串,例如:hello world
被正则表达式hello world
匹配。此外想匹配多个字符时,可使用范围([]
)来匹配。例如,hello
被正则表达式[helo]+
匹配。该表达式中的加号表示h,e,l,o四个字母中的任意一个可以出现多次。
特殊字符匹配
正则表达式中还有许多特殊字符用于匹配不符合普通字符串的要求,例如:
特殊字符 | 描述 |
---|---|
. | 匹配除换行符(\n)以外的任意单个字符 |
\d | 匹配任意一位数字 |
\D | 匹配非数字字符 |
\s | 匹配任意空白符 |
\S | 匹配任意非空白符 |
\w | 匹配任意字母、数字或下划线字符 |
\W | 匹配任意非字母、数字或下划线字符 |
例如,正则表达式\d{3}-\d{4}-\d{4}
匹配美国的电话号码(XXX-XXXX-XXXX格式)。
限定符
正则表达式中,限定符表示字符匹配的次数,它们常常与特殊字符搭配使用来匹配更加具体的字符串。
限定符 | 描述 |
---|---|
* | 匹配0个或多个特定字符 |
+ | 匹配1个或多个特定字符 |
? | 匹配0个或1个特定字符 |
{n} | 匹配指定数量的字符 |
{n,} | 匹配至少n个特定字符 |
{n,m} | 匹配n-m个特定字符 |
例如,正则表达式[a-z]+
匹配任意多个小写字母,而正则表达式[a-z]{3,5}
匹配3-5个小写字母。
其他语法
正则表达式中还有一些其他的语法来匹配特定的字符串,例如:
语法 | 描述 |
---|---|
^ | 匹配字符串的开头 |
$ | 匹配字符串的结尾 |
() | 用于对匹配的字符分组 |
例如,正则表达式^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
匹配IP地址。
C#中的正则表达式示例
示例一:验证Email地址
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main(string[] args)
{
string pattern = @"^[A-Za-z0-9]+([-._][A-Za-z0-9]+)*@[A-Za-z0-9]+([-._][A-Za-z0-9]+)*\.[A-Za-z]{2,}$";
Regex regex = new Regex(pattern);
string[] emails = {
"example@mail.com",
"example.123@mail.com",
"example_123@mail.com",
"example@mail.cn",
"example@mail-com.cn",
"example@mail",
"example@.com",
"example@mail.test.com."
};
foreach (string email in emails)
{
if (regex.IsMatch(email))
{
Console.WriteLine($"Valid email: {email}");
}
else
{
Console.WriteLine($"Invalid email: {email}");
}
}
}
}
在本示例中,通过正则表达式验证Email地址是否符合格式要求。如果格式正确,输出“Valid email: ” + 邮箱地址;如果格式不正确,输出“Invalid email: ” + 邮箱地址。正则表达式^[A-Za-z0-9]+([-._][A-Za-z0-9]+)*@[A-Za-z0-9]+([-._][A-Za-z0-9]+)*\.[A-Za-z]{2,}$
表示:以字母和数字开头,可包含连字符、下划线或点号,中间可以有这些字符,以@分割,后面可包含连字符、下划线或点号,中间可以有这些字符,以.
结尾,结尾处字母数量为2或多个。符合这个要求的字符串即为Email地址。
示例二:替换字符串中的URL
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main(string[] args)
{
string pattern = @"((http|ftp|https):\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?)";
Regex regex = new Regex(pattern);
string text = "Please visit my website: http://www.example.com or FTP site: ftp://example.com";
string replacedText = regex.Replace(text, "<a href=\"$1\">$1</a>");
Console.WriteLine(replacedText);
}
}
在本示例中,使用正则表达式替换字符串中的URL。使用正则表达式((http|ftp|https):\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?)
匹配URL,其中|
表示或,后面跟着的是三种URL协议。匹配到URL后,将URL替换成带链接的a标签,最后输出替换后的字符串。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中的正则表达式介绍 - Python技术站