# 正则表达式
# 正则语法
# 单个字符
- 换行符:
\n
,记忆方法:new line; - 换页符:
\f
,记忆方法:form feed; - 回车符:
\r
,记忆方法:return; - 空白符:
\s
,记忆方法:space; - 制表符:
\t
,记忆方法:table;
# 多个字符
- 定义集合:
[]
,例如/[123]/
可以同时匹配 1,2,3 三个字符; [0-9]
匹配所有数字,[a-z]
匹配所有小写英文字母,[A-Z]
匹配所有小写英文字母,[\u4e00-\u9fa5]
匹配所有的汉子;- 匹配除了换行符之外的任何字符:
.
,记忆方法:代表句号,表示除了句子结束符 - 匹配单个数字[0-9],
\d
,记忆方法:digit; - 匹配除了[0-9],
\D
,记忆方法:not digit; - 匹配包括下划线在内的单个字符,[A-Za-z0-9_],\w,记忆方法:word;
- 匹配非单字字符,
\W
,记忆方法:not word; - 匹配空白字符,包括空格、制表符、换页符和换行符,\s,记忆方法:space;
- 匹配非空白字符,
\S
,记忆方法:not space
# 匹配次数
- 元字符
?
代表了匹配 1 个字符或 0 个字符,例如同时匹配color
和colour
,可以使用/colou?r/
。 - 元字符
*
用来表示匹配同个字符出现 0 次或多次的情况。 - 元字符
+
适用于要匹配同个字符出现 1 次或多次的情况。 - 特定的重复次数:使用元字符
{
和}
用来给重复匹配设置精确的区间范围。如想匹配 3 次'a',使用/a{3}/,如果匹配至少两次'a'用/a{2,}/,详细信息:{x}
: x 次{min, max}
: 介于 min 次到 max 次之间{min, }
: 至少 min 次{0, max}
: 至多 max 次
# 单词与字符串边界
单词是构成句子和文章的基本单位,一个常见的使用场景是把文章或句子中的特定单词找出来。这时需要用边界正则表达式\b
,例如对于例句:
The cat scattered his food all over the room.
想找 cat 这个单词,如果只是使用/cat/
,会同时匹配到 cat 和 scattered 这两处文本。这时需使用边界正则表达式\b
,其中 b 是 boundary 的首字母。在正则引擎里它其实匹配的是能构成单词的字符(\w)和不能构成单词的字符(\W)中间的那个位置。上面的例子改写成/\bcat\b/
这样就能匹配到 cat 这个单词了。
对于字符串来说,元字符^
用来匹配字符串的开头。而元字符$
用来匹配字符串的末尾。
# 分组
其中分组体现在:所有以(
和)
元字符所包含的正则表达式被分为一组,每一个分组都是一个子表达式,它也是构成高级正则表达式的基础。如果只是使用简单的(regex)匹配语法本质上和不分组是一样的,如果要发挥它强大的作用,往往要结合回溯引用的方式。
所谓回溯引用(backreference)指的是模式的后面部分引用前面已经匹配到的子字符串。你可以把它想象成是变量,回溯引用的语法像\1
,\2
,....,其中\1
表示引用的第一个子表达式,\2
表示引用的第二个子表达式,以此类推。而\0
则表示整个表达式。
# python使用正则表达式
# python使用正则提取信息
import re
p = re.compile("正则表达式") # 对正则表达式字符串进行编译
← 搭建指南