引言
学习re模块之前 要先了解 正则表达式 更好的去使用和理解re模块
正则表达式
正则表达式是对字符串操作的一种逻辑公式,它会将事先定义好的一些特定字符,以及这些特定字符的组合,组成一个规则字符串,并且通过这个规则字符串表达对给定字符串的过滤逻辑。
一条正则表达式也称为一个模式,使用每个模式可以匹配指定文本中与表达式模式相同的字符串。正则表达式由 普通字符 、元字符 或 预定义字符集组成,其中普通字符包括大小写字母和数字。
元字符
元字符 | 说明 |
---|---|
. | 匹配任何一个字符(换行符除外) |
^ | 匹配字符串的开头 |
$ | 匹配字符串的末尾 |
| | 连接多个子表达式,匹配与任意子表达式模式相同的字符串 |
[] | 字符组,匹配其中出现的任意一个字符 |
- | 连字符,匹配指定范围内的任意一个字符 |
? | 匹配其 前导字符 0次 或 1次 |
* | 匹配其 前导字符 0次 或 多次 |
+ | 匹配其 前导字符 1次 或 多次 |
{n} | 匹配其 前导字符 n 次 |
{m,n} | 匹配其 前导字符 m ~ n 次 |
() | 分组,匹配子组 |
.* | 贪婪匹配 :表示任意匹配除换行符(\n、\r)之外的任何单个或多个字符, 当使用.* 时,默认情况下,正则表达式引擎会尽可能多地匹配字符,这称为贪婪匹配 它会匹配从字符串开头到 正则表达式 之间的所有内容 |
.*? | 惰性匹配 :懒惰量词告诉正则表达式引擎尽可能少地匹配字符。使用.*? 时,引擎会尽可能少地匹配字符直到它找到匹配模式的剩余部分。 |
预定义字符
预定义字符 | 说明 |
---|---|
\w | 匹配下画线"_"或任何字母(a~z,A~Z)与数字(0~9) |
\s | 匹配任意的空白字符,等价于[<空格>\t\r\n\f\v] |
\d | 匹配任意数字,等价于[0-9] |
\b | 匹配单词的边界 |
\W | 与\w相反,匹配非字母或数字或下画线的字符 |
\S | 与\s相反,匹配任意非空白字符的字符,等价于[^\s] |
\D | 与\d相反,匹配任意非数字的字符,等价于[^\d] |
\B | 与\b相反,匹配不出现在单词边界的元素 |
\A | 仅匹配字符串开头,等价于^ |
\Z | 仅匹配字符串结尾,等价于$ |
捕获组
捕获组是正则表达式中的一个概念,它允许你从匹配的文本中提取子字符串。在正则表达式中,捕获组通过使用圆括号 ()
来定义。
- 圆括号
()
内的正则表达式定义了一个捕获组。 - 每个捕获组匹配的文本可以被捕获并存储,通常用于后续的引用或操作。