Python 正则表达式详解与实战案例
前言
正则表达式(Regular Expression)在网络爬虫、数据分析、文本处理等领域有着广泛的应用。掌握正则表达式能够达到事半功倍的效果,是程序员必备的技能之一。本文详细介绍正则表达式中各种规则及其符号含义,并结合 Python 中的 re 库进行演示,由浅入深,即学即练即用。
什么是正则表达式
正则表达式就是用一组由字母和符号组成的'表达式'来描述一个特征,然后去验证另一个'字符串'是否符合这个特征。比如表达式 xy+ 描述的特征是'一个 'x' 和至少一个 'y'',那么 xy, xyy, xyyyyyyy 都符合这个特征。
正则表达式主要应用场景
- 验证字符串:验证用户名或密码是否符合要求、是否是合法的邮件地址等。
- 查找字符串:从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。
- 替换字符串:用来替换,比普通的替换更强大,支持基于模式的替换。
正则表达式的规则
(1)普通字符
字母、数字、汉字、下划线、以及没有特殊定义的标点符号,都是"普通字符"。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。
例 1:表达式
c,在匹配字符串abcde时,匹配结果是:成功;匹配到的内容是:c;匹配到的位置是:开始于 2,结束于 3。(包含开始位置,不包含结束位置)
例 2:表达式
bcd,在匹配字符串abcde时,匹配结果是:成功;匹配到的内容是:bcd;匹配到的位置是:开始于 1,结束于 4。
(2)转义字符
一些不便书写的字符,采用在前面加 \ 的方法。例如制表符、换行符等;
一些有特殊用处的标点符号,在前面加 \ 后,代表该符号本身。例如 {,}, \[, \], /, \\, +, *, ., $, ^, |, ? 等;
转义字符的匹配方法与'普通字符'类似,也是匹配与之相同的一个字符。
例如:表达式
\d,在匹配字符串abcde时,匹配结果是:失败(因为 d 不是数字)。如果字符串是a1cde,则匹配成功,匹配到1。
(3)能够与'多种字符'匹配的表达式
正则表达式中的一些表示方法,可以匹配'多种字符'中的任意一个字符。例如,表达式 \d 可以匹配任意一个数字。虽然可以匹配其中任意字符,但是只能是一个,不是多个。
例如:表达式
\d\d,在匹配abc123时,匹配的结果是:成功;匹配到的内容是:12;匹配到的位置是:开始于 3,结束于 5。
(4)自定义能够匹配'多种字符'的表达式
使用方括号 [] 包含一系列字符,能匹配其中任意一个字符。用 [^] 包含一系列字符,则能匹配其中字符之外的任意一个字符。虽然可以匹配其中任意一个,但是只能是一个,不是多个。
例如:表达式
[bcd][bcd]匹配abc123时,匹配的结果是:成功;匹配到的内容是:bc;匹配到的位置是:开始于 1,结束于 3。
(5)修饰匹配次数的特殊符号
这些符号用于指定前面的字符或组需要匹配的次数:


