正则表达式
一,正则表达式介绍
概述:正则表达式是有自己特定语法结构的处理字符串的工具。
Ⅰ,一般字符
字符 | 含义 |
---|---|
. | 匹配任意单个字符(不包括换行符\n) |
\ | 转义字符 |
[…] | (对应字符集中任意字符) |
| | 或 |
.:匹配任意单个字符,如a.c可以匹配的结果为abc,avc等。
\:转义字符,如\n
[…]:在括号中任选一个,如a[bcd],匹配的结果为ab,ac,ad。
|:a|b匹配a或b
Ⅱ,预定义字符集
预定义字符集 | 含义 |
---|---|
\d | 匹配一个数字字符。等价于[0-9] |
\D | 匹配一个非数字字符。等价于[^0-9] |
\s | 匹配任何空白字符,包括空格,制表符,换页符等。等价于[\f\n\r\t\v] |
\S | 匹配任何非空白字符,等价于[^\f\n\r\t\v] |
\w | 匹配字母,数字以及下划线。 |
\W | 匹配不是字母、数字以及下划线的字符。 |
\f:换页符
\r:回车符(与\n有区别)
\v:垂直制表
Ⅲ,数量词
数量词 | 含义 |
---|---|
* | 匹配前一个字符0或无限次 |
+ | 匹配前一个字符1或无限次 |
? | 匹配前一个字符0或1次 |
{m} | 匹配前一个字符m次 |
{m,n} | 匹配前一个字符m至n次 |
*:如abc匹配ac,abc,abbc等
+:如abc匹配abc,abbc,abbbc等
?:ab?c匹配ac,abc
{m}:如ab{3}c匹配abbbc
{m,n}:如ab{2,4}匹配abbc,abbbc和abbbbc
Ⅳ,边界匹配
边界匹配 | 含义 |
---|---|
^ | 匹配字符串开头 |
$ | 匹配字符串结尾 |
\A | 匹配字符串开头 |
\Z | 匹配字符串结尾,若存在换行,仅匹配到换行前的字符串 |
二,re库的介绍
利用此库,可以在Python中使用正则表达式
1,match()方法
①基本用法
语法:re.match(pattern, string, flags=0)
作用:尝试从字符串起始位置匹配正则表达式
参数:
pattern:匹配的正则表达式
string:要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等,接收标志修饰符
返回值:若匹配成功,返回结果;若失败,返回None。
示例:
import re
string = 'Hello fly 123 4567 World_Cup is a Range Refuge '
re_string = 'Hello\s\D{3}\s\d{3}\s\d{4}\s\w{9}'
result = re.match(string=string,pattern=re_string)
print(result)
print(result.group())#方法group(),输出匹配到的内容
print(result.span())#方法span(),输出匹配的范围
②匹配目标
用()将像提取的子字符串括起来,以标记一个子字符串的起始位置和结束位置,被标记的子字符串会依次对应每一个分组,向group()传递索引可以获取想要的结果。
import re
string = 'Hello fly 123 4567 World_Cup is a Range Refuge '
re_string = 'Hello\s(\D{3})\s\d{3}\s(\d{4})\s\w{9}'
result = re.match(string=string,pattern=re_string)
print(result)
print(result.group(1)