C# 正则表达式常用的符号和模式解析(最新推荐)
简介
正则表达式是面向“字符”模式的,由字符组成的一种检索模式。在C#中,对正则表达式有很好的支持,我们可以使用System.Text.RegularExpressions.Regex类进行正则表达式的匹配和操作。
虽然正则表达式的语法看似复杂,但是当你掌握了其中的一些常用的符号,你会发现正则表达式变得简单易用。下面将为大家详细讲解C#正则表达式常用的符号和模式解析。
常用符号
下面是常用的正则表达式符号:
符号 | 解释 |
---|---|
\ | 转义字符 |
^ | 行的开头 |
$ | 行的结尾 |
. | 除换行符外的任何字符 |
* | 0个或多个前面的表达式 |
+ | 1个或多个前面的表达式 |
? | 0个或1个前面的表达式 |
{n} | 正好n次前面的表达式 |
{n,} | 至少n次前面的表达式 |
{n,m} | n到m次前面的表达式 |
[] | 字符集合 |
[^ ] | 否定字符集合 |
### 转义字符 \
转义字符\是正则表达式中的一个重要符号。如果你想插入元字符本身,你可以使用转义字符\。例如,如果你想查找“abc+”字符串中的“+”,你可以使用如下的正则表达式:
string pattern = "abc\\+";
行的开头 ^ 和行的结尾 $
如果你想匹配以某个字符开头的字符串或者以某个字符结尾的字符串,你可以使用行的开头^和行的结尾$。例如,如果你想匹配以“http”开头的链接,你可以使用如下的正则表达式:
string pattern = "^http";
类似地,如果你想匹配以“.com”结尾的链接,你可以使用如下的正则表达式:
string pattern = ".com$";
任意字符 .
点号.是正则表达式中另一个重要的符号,它可以匹配除了换行符之外的任何字符。例如,如果你想查找“ab”后面的任意字符,你可以使用如下的正则表达式:
string pattern = "ab.";
0个或多个 *,1个或多个 + 和0个或1个 ?
星号、加号+和问号?是三个常用的量词符号。星号表示0个或多个前面的表达式,加号+表示1个或多个前面的表达式,问号?表示0个或1个前面的表达式。例如,如果你想匹配任意数量的a字符,你可以使用如下的正则表达式:
string pattern = "a*";
如果你想匹配任意数量的b字符,但是至少要有一个b字母,你可以使用如下的正则表达式:
string pattern = "b+";
如果你想匹配字符串“aba”和“ab”,你可以使用如下的正则表达式:
string pattern = "aba?";
准确数量 {}
如果你想匹配一个数字或字符的固定次数,你可以使用大括号{}。其中{n}表示正好n次前面的表达式,{n,}表示至少n次前面的表达式,{n,m}表示n到m次前面的表达式。
例如,如果你想匹配10个a字符,你可以使用如下的正则表达式:
string pattern = "a{10}";
字符集合 []
字符集合使用中括号[]括起来,用来匹配一组中的任意一个字符。例如,如果你想匹配小写字母a、b或c,你可以使用如下的正则表达式:
string pattern = "[abc]";
否定字符集合 [^ ]
否定字符集合使用中括号[]和 ^ 符号一起使用,用来匹配不属于字符集合中的任何一个字符。例如,如果你想匹配除了小写字母a、b和c之外的任何字符,你可以使用如下的正则表达式:
string pattern = "[^abc]";
示例说明
接下来,将演示两个示例来让你了解正则表达式的运用。
示例1:验证密码强度
假设现在需要验证密码强度,要求密码必须包含至少一个数字、一个大写字母和一个特殊符号。
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
Console.Write("请输入密码:");
string password = Console.ReadLine();
bool isStrongPassword = Regex.IsMatch(password, @"^(?=.*\d)(?=.*[A-Z])(?=.*[!@#$%^&*()_+])[A-Za-z\d!@#$%^&*()_+]{8,}$");
if (isStrongPassword)
{
Console.WriteLine("密码强度符合要求!");
}
else
{
Console.WriteLine("密码强度过弱,请重新输入!");
}
}
}
在上面的示例中,使用了正则表达式^(?=.*\d)(?=.*[A-Z])(?=.*[!@#$%^&*()_+])[A-Za-z\d!@#$%^&*()_+]{8,}$
来验证密码。这个表达式意思是:
(?=.*\d)
表示密码中必须包含至少一个数字;(?=.*[A-Z])
表示密码中必须包含至少一个大写字母;(?=.*[!@#$%^&*()_+])
表示密码中必须包含至少一个特殊符号;[A-Za-z\d!@#$%^&*()_+]
表示密码可以使用大小写字母、数字和一些特殊符号组成;{8,}
表示密码的长度至少为8位。
示例2:搜索文本中的电话号码
假设现在有一个字符串文本,我们需要从中搜索电话号码。
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string text = "我的电话号码是:13612345678,你的电话号码是:13887654321。请尽快联系我。";
MatchCollection matches = Regex.Matches(text, @"\d{11}");
Console.WriteLine("搜索到的电话号码如下:");
foreach (Match match in matches)
{
Console.WriteLine(match.Value);
}
}
}
在上面的示例中,使用了正则表达式\d{11}
来搜索电话号码。这个表达式意思是,匹配11个数字。
结论
通过以上的讲解和示例,相信大家已经掌握了正则表达式在C#中的应用。正则表达式虽然看上去稍微有一些难度,但是掌握了一些常用的符号之后,就变得简单易懂。多加练习,相信你会成为正则表达式的高手。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 正则表达式常用的符号和模式解析(最新推荐) - Python技术站