📅  最后修改于: 2023-12-03 15:10:58.125000             🧑  作者: Mango
正则表达式(Regular Expression,简称 RegEx)是一种用来匹配文本串的模式。通过构造一个包含特定语法的字符串,可以实现快速地匹配、查找、替换文本串。
正则表达式的语法由各种字符和操作符组成,这些字符和操作符可以用来构造一个具体的匹配模式。下面是一些常用的语法:
字符组:用方括号 [] 包含一组可能的字符。
[aeiou] # 匹配任意一个元音字母
[0-9] # 匹配任意一个数字
[a-zA-Z] # 匹配任意一个字母
元字符:具有特殊含义的字符。
. # 匹配任意一个字符
\d # 匹配任意一个数字
\w # 匹配任意一个单词字符,包括字母、数字和下划线
\s # 匹配任意一个空白字符,包括空格、制表符和换行符
重复符号:用来指定匹配的次数。
* # 零次或多次
+ # 一次或多次
? # 零次或一次
{3} # 正好出现3次
{3,} # 至少出现3次
{3,5}# 出现3-5次
边界符号:用来指定匹配的位置。
^ # 匹配字符串的开头
$ # 匹配字符串的结尾
\b # 匹配单词边界
分组符号:用来提取和捕获匹配的子串。
() # 创建一个捕获组,用来提取匹配的子串
(?:) # 创建一个非捕获组,不用来提取匹配的子串
(?<name>) # 创建一个命名捕获组,用来提取匹配的子串,并用指定的名称命名
(?'name') # 创建一个命名捕获组,用来提取匹配的子串,并用指定的名称命名
(?P<name>) # 创建一个命名捕获组,用来提取匹配的子串,并用指定的名称命名
下面是一个正则表达式的样例,它可以匹配一个合法的电子邮件地址:
import re
pattern = r'^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$'
email1 = 'example@mail.com'
email2 = 'example.2019@mail.com.cn'
print(re.match(pattern, email1))
print(re.match(pattern, email2))
结果如下:
<re.Match object; span=(0, 15), match='example@mail.com'>
<re.Match object; span=(0, 23), match='example.2019@mail.com.cn'>
学会正则表达式可以帮助我们更高效地处理文本数据,可以用来解决搜索、替换、格式化等问题。虽然正则表达式的语法比较复杂,但只要掌握了基本的语法和操作符,就可以应对大部分情况。