re.findall(匹配的规则,被匹配的字符串)
匹配整个字符串,能找出全部的匹配项,返回值为列表类型。
re.findall() 使用时,如果正则表达式中有括号()时(划分出分组),会把每一个组匹配的结果返回,而不是匹配的整体。
我们可以把整个正则表达式用 ( ) 括起来,这样就能返回值可就有匹配整体的结果了。
元字符匹配
#字符串前面带r的标记,表示字符串中转义字符无效,就是普通的字符
元字符 | 描述说明 |
---|
^ | 该元字符在方括号外表示匹配字符串的开头,用于改变匹配起始位置 在方括号内表示对方括号内的内容“取非”,如 [^0-9] 表示匹配单个非数字字符 |
$ | 该元字符放在正则表达式末尾位置,表示匹配字符串的末尾,^和$可用于匹配起始位置 |
. | 匹配除换行符(\n)以外的任意单个字符 |
? | 该修饰符用于其它修饰符后面,表示匹配模式为非贪婪的 |
| | 或者的意思,如 a|b 匹配字符 a 或者字符 b 不用圆括号进行分组时会影响整个正则表达式,如 abc|bcd 匹配字符abc或字符串bcd |
[ ] | 只匹配满足方括号内正则表达式的单个字符, 如 [abc] 只匹配字符 a 或字符 b 或字符 c |
[ ^] | 匹配排除方括号内单个字符, 如 [^abc] 匹配除字符 a、 b、 c以外的其它字符 |
( ) | 将满足圆括号内的正则表达式的字符串划分为一个组(group),便于分组分类 |
\w | 匹配单个的单词字符,其中单词字符是指:数字字符、字母字符(不区分大小写)及下划线字符 |
\W | 匹配单个的非单词字符 |
\s | 匹配单个空白字符,空白字符包括空格、换行符\n、横向制表符\t、\r、换页符\f 等 |
\S | 匹配单个非空白字符 |
\d | 匹配单个数字字符 |
\D | 匹配单个非数字字符 |
\b | 匹配单词字符串的边界,指单词字符串贴着非单词字符的部分 如 on\b 可以匹配 Python 中的 on,但不能匹配 none 中的 on |
\B | 匹配非单词字符串边界 |
\Z | 放于正则表达式末尾,匹配字符串是否结束 |
\A | 放于正则表达式起始,匹配字符串是否开始 |
\n | 匹配单个换行符,类似的还有 \t、\r、\f 等 |
\num | 引用前面已经划分好的组,num 为一个正整数,代表组号 |
[A-B] 或 [A-BC-D] 等 | 匹配单个字符,字符在 ASCII 字符集中的对应码位于字符 A 到字符 B 之间(包括 A 与 B) 如:[0-9] 匹配单个数字; [a-z] 匹配单个小写字母; [!-@] 匹配标点符号及数字; [a-zA-Z] 匹配单个字母字符; [!-/:-@] 匹配标点符号;注:[a-Z] 会报错! |
RE* | 匹配任意个连续的 RE |
RE+ | 匹配1个或多个连续的 RE |
RE? | 匹配 0 个或 1 个 RE,非贪婪方式(见示例说明部分) |
RE{n} | 匹配 n 个连续的 RE |
RE{n,m} | 匹配 n 个到 m 个连续的 RE,省略 m(即 RE{n,} )则表示匹配 n 个及 n 个以上(无具体上限)、连续的 RE |
(?flags:RE) | flags 代表修饰符,可在圆括号中(该分组)使用 i、m、x 等可选标志(必须小写),而不影响其它部分 |
(?-flags:RE) | flags 代表修饰符,可在圆括号中(该分组)取消使用 i、m、x 等可选标志(必须小写),而不影响其它部分 |
(?#note) | note 表示注释的内容,整个(?#note)代表注释,不影响匹配,只起解释说明作用 |
(?:RE) | 按顺序命名组时,忽略该组(即,一般非捕获分组),匹配结果包含 RE |
(?=RE) | 正向肯定预查(look ahead positive assert),匹配需满足 RE 正则表达式条件 匹配结果不包含 RE,且预查不消耗字符,下次匹配仍从 RE 开始 |
(?!RE) | 正向否定预查(look ahead negative assert),匹配需不满足 RE 正则表达式条件匹配结果不包含 RE,且预查不消耗字符,下次匹配仍从 RE 开始 |
(?<=RE) | |
(?<!RE) | |