博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python开发模块基础:正则表达式
阅读量:6475 次
发布时间:2019-06-23

本文共 3659 字,大约阅读时间需要 12 分钟。

一,正则表达式

1.字符组:[0-9][a-z][A-Z]

在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示

字符分为很多类,比如数字、字母、标点等等。
假如你现在要求一个位置"只能出现一个数字",那么这个位置上的字符只能是0、1、2...9这10个数之一。
可以写成这种 [0-5a-eA-Z] 取范围的匹配

2.字符

1 #!/usr/bin/python env 2 #_*_coding:utf-8_*_ 3  4 .   匹配除换行符以外的任意字符 5 \w  匹配字母或数字或下划线 6 \s  匹配任意的空白符 7 \d  匹配数字 8 \n  匹配一个换行符 9 \t  匹配一个制表符10 \b  匹配一个单词的结尾11 ^   匹配字符串的开始12 $   匹配字符串的结尾13 \W  匹配非字母或数字或下划线14 \D  匹配非数字15 \S  匹配非空白符16 a|b 匹配字符a或字符b17 ()  匹配括号内的表达式,也表示一个组18 [...]   匹配字符组中的字符19 [^...]  匹配除了字符组中字符的所有字符
 
3.量词
1 #!/usr/bin/python env 2 #_*_coding:utf-8_*_ 3  4 量词  用法说明 5 *   重复零次或更多次 6 +   重复一次或更多次 7 ?   重复零次或一次 8 {n} 重复n次 9 {n,}    重复n次或更多次10 {n,m}   重复n到m次

 

4. .^$

1 #!/usr/bin/python env2 #_*_coding:utf-8_*_5 正则      待匹配字符       匹配结果           说明6 海.       海燕海娇海东     海燕海娇海东        匹配所有"海."的字符7 ^海.      海燕海娇海东     海燕               只从开头匹配"海."8 海.$      海燕海娇海东     海东               只匹配结尾的"海.$"

 

5.*+?{}

1 #!/usr/bin/python env 2 #_*_coding:utf-8_*_ 3 正则      待匹配字符                   匹配结果                说明 4 李.?     李杰和李莲英和李二棍子     李杰/李莲/李二              ?表示重复零次或一次,即只匹配"李"后面一个任意字符  5 李.*     李杰和李莲英和李二棍子     李杰和李莲英和李二棍子        *表示重复零次或多次,即匹配"李"后面0或多个任意字符 6 李.+     李杰和李莲英和李二棍子     李杰和李莲英和李二棍子        +表示重复一次或多次,即只匹配"李"后面1个或多个任意字符 7 李.{1,2} 李杰和李莲英和李二棍子     李杰和/李莲英/李二棍         {1,2}匹配1到2次任意字符 8  9 注意:前面的*,+,?等都是贪婪匹配,也就是尽可能匹配,后面加?号使其变成惰性匹配10 正则      待匹配字符                   匹配结果        说明11 李.*?     李杰和李莲英和李二棍子       李/李/李         惰性匹配

 

 6.字符集[][^]

1 #!/usr/bin/python env2 #_*_coding:utf-8_*_3 4 正则                   待匹配字符                  匹配结果                说明5 李[杰莲英二棍子]*      李杰和李莲英和李二棍子     李杰/李莲英/李二棍子     表示匹配"李"字后面[杰莲英二棍子]的字符任意次 6 李[^和]*               李杰和李莲英和李二棍子     李杰/李莲英/李二棍子     表示匹配一个不是"和"的字符任意次7 [\d]                   456bdha3                   4/5/6/3                  表示匹配任意一个数字,匹配到4个结果8 [\d]+                  456bdha3                   456/3                    表示匹配任意个数字,匹配到2个结果

 

7.分组()或|和[^]

1 #!/usr/bin/python env 2 #_*_coding:utf-8_*_ 5 身份证号码是一个长度为15或18个字符的字符串,如果是15位则全部?️数字组成,首位不能为0;如果是18位,则前17位全部是数字,末位可能是数字或x,下面我们尝试用正则来表示: 6 正则                                 待匹配字符                   匹配结果                  说明 7 ^[1-9]\d{13,16}[0-9x]$              110101198001017032          110101198001017032      表示可以匹配一个正确的身份证号 8 ^[1-9]\d{13,16}[0-9x]$              1101011980010170            1101011980010170        表示也可以匹配这串数字,但这并不是一个正确的身份证号码,它是一个16位的数字 9 ^[1-9]\d{14}(\d{2}[0-9x])?$         1101011980010170            False                   现在不会匹配错误的身份证号了()表示分组,将\d{2}[0-9x]分成一组,就可以整体约束他们出现的次数为0-1次10 ^([1-9]\d{16}[0-9x]|[1-9]\d{14})$   110105199812067023          110105199812067023      表示先匹配[1-9]\d{16}[0-9x]如果没有匹配上就匹配[1-9]\d{14}

 

8.转义符\

1 #!/usr/bin/python env 2 #_*_coding:utf-8_*_ 3  4 在正则表达式中,有很多有特殊意义的是元字符,比如\d和\s等,如果要在正则中匹配正常的"\d"而不是"数字"就需要对"\"进行转义,变成'\\'。 5 在python中,无论是正则表达式,还是待匹配的内容,都是以字符串的形式出现的,在字符串中\也有特殊的含义,本身还需要转义。所以如果匹配一次"\d",字符串中要写成'\\d',那么正则里就要写成"\\\\d",这样就太麻烦了。    这个时候我们就用到了r'\d'这个概念,此时的正则是r'\\d'就可以了。 6 正则                   待匹配字符                  匹配结果                说明 7 d                      \d                         False                   因为在正则表达式中\是有特殊意义的字符,所以要匹配\d本身,用表达式\d无法匹配 8 \\d                    \d                          True                    转义\之后变成\\,即可匹配 9 "\\\\d"                '\\d'                       True                    如果在python中,字符串中的'\'也需要转义,所以每一个字符串'\'又需要转义一次10 r'\\d'                  r'\d'                     True                    在字符串之前加r,让整个字符串不转义

 

9,贪婪匹配

1 #!/usr/bin/python env 2 #_*_coding:utf-8_*_ 3  4 贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配 5 正则                   待匹配字符                  匹配结果                说明 6 <.*>                   

 

 

 

 

 

转载于:https://www.cnblogs.com/jokerbj/p/7327849.html

你可能感兴趣的文章
iOS项目分层
查看>>
IntelliJ IDEA 注册码
查看>>
String字符串的截取
查看>>
DynamoDB Local for Desktop Development
查看>>
Shell编程-环境变量配置文件
查看>>
Struts2和Spring MVC的区别
查看>>
理解Javascript参数中的arguments对象
查看>>
<<The C Programming Language>>讀書筆記
查看>>
git代码冲突
查看>>
解析查询 queryString 请求参数的函数
查看>>
git bash 风格调整
查看>>
linux操作系统加固软件,系统安全:教你Linux操作系统的安全加固
查看>>
linux中yum源安装dhcp,24.Linux系统下动态网络源部署方法(dhcpd)
查看>>
HDOJ-1010 Tempter of the Bone
查看>>
JavaNIO基础02-缓存区基础
查看>>
日本开设无人机专业,打造无人机“人才市场”
查看>>
190行代码实现mvvm模式
查看>>
兼容几乎所有浏览器的透明背景效果
查看>>
jeesite 框架搭建与配置
查看>>
Linux VNC server的安装及简单配置使用
查看>>