正则表达式(Regular Expressions,简称 regex 或 regexp)是一种用于匹配字符串中字符组合的模式。它们在文本处理、数据验证、搜索和替换等方面非常有用。以下是正则表达式的基本语法和一些常用符号的说明:
基本语法
-
字符匹配
a
:匹配字符a
。abc
:匹配字符串abc
。
-
字符类
[abc]
:匹配方括号内的任意一个字符(a
、b
或c
)。[a-z]
:匹配任意一个小写字母。[A-Z]
:匹配任意一个大写字母。[0-9]
:匹配任意一个数字。[a-zA-Z0-9]
:匹配任意一个字母或数字。[^abc]
:匹配不在方括号内的任意一个字符(非a
、b
或c
)。
-
预定义字符类
\d
:匹配任意一个数字(等价于[0-9]
)。\D
:匹配任意一个非数字(等价于[^0-9]
)。\w
:匹配任意一个字母、数字或下划线(等价于[a-zA-Z0-9_]
)。\W
:匹配任意一个非字母、数字或下划线(等价于[^a-zA-Z0-9_]
)。\s
:匹配任意一个空白字符(包括空格、制表符、换行符等)。\S
:匹配任意一个非空白字符。
-
量词
*
:匹配前面的元素零次或多次。+
:匹配前面的元素一次或多次。?
:匹配前面的元素零次或一次。{n}
:匹配前面的元素恰好n
次。{n,}
:匹配前面的元素至少n
次。{n,m}
:匹配前面的元素至少n
次,但不超过m
次。
-
边界匹配
^
:匹配字符串的开始。$
:匹配字符串的结束。\b
:匹配单词边界。\B
:匹配非单词边界。
-
分组和捕获
(abc)
:将abc
作为一个整体进行匹配,并捕获匹配的内容。(?:abc)
:将abc
作为一个整体进行匹配,但不捕获匹配的内容(非捕获组)。
-
选择
a|b
:匹配a
或b
。
-
转义字符
\
:用于转义特殊字符,使其按字面意义匹配。例如,\.
匹配一个点字符,而不是任意字符。
示例
-
匹配电子邮件地址
regex
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
-
匹配电话号码
regex
\(\d{3}\) \d{3}-\d{4}
-
匹配日期(格式:YYYY-MM-DD)
regex
\d{4}-\d{2}-\d{2}
使用示例(C#)
以下是一个在C#中使用正则表达式的示例,验证电子邮件地址:
csharp
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string email = "example@example.com";
string pattern = @"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}";
if (Regex.IsMatch(email, pattern))
{
Console.WriteLine("有效的电子邮件地址");
}
else
{
Console.WriteLine("无效的电子邮件地址");
}
}
}
总结
正则表达式是一种强大的工具,能够帮助你高效地处理字符串。通过掌握基本语法和常用符号,你可以编写出复杂的匹配模式来满足各种需求。