python全栈开发 * 29知识点汇总 * 180712
Posted j-7-h-2-f-7
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python全栈开发 * 29知识点汇总 * 180712相关的知识,希望对你有一定的参考价值。
29 正则表达式 re模块
一.正则表达式
官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,
这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式
作用:
1.规范字符串规则(通过一个规则从一段字符串中找到符合规则的内容)
2.判断某段字符串是否符合规则.
(一).字符组 [ - ]从小往大指 按照ascii的顺序
在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示
字符分为很多类,比如数字、字母、标点等等
(二).字符
元字符 匹配内容
. 匹配除换行符以外的任意字符
w 匹配字母或数字或下划线
s 匹配任意的空白符
d 匹配数字
匹配一个换行符
匹配一个制表符
匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结尾
W 匹配非字母或数字或下划线
D 匹配非数字
S 匹配非空白符
a|b 匹配字符a或字符b
() 匹配括号内的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配除了字符组中字符的所有字符
(三).量词
量词 用法说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
(四).字符集 字符集[][^]
李[杰莲英二棍子]* 表示匹配"李"字后面[杰莲英二棍子]的字符任意次
李[^和]* 表示匹配一个不是"和"的字符任意次
[d] 456bdha3 表示匹配任意一个数字,匹配到4个结果
[d]+ 456bdha3 表示匹配任意个数字,匹配到2个结果
(五).分组 或| [^]
身份证号码是一个长度为15或18个字符的字符串,如果是15位则全部???数字组成,首位不能为0;
如果是18位,则前17位全部是数字,末位可能是数字或x,下面我们尝试用正则来表示
^[1-9]d{16}[0-9x]|^[1-9]d{14}
(六)转意符
1.在正则表达式中,有很多有特殊意义的是元字符,比如d和s等,
如果要在正则中匹配正常的"d"而不是"数字"就需要对""进行转义,变成‘\‘
2.所以如果匹配一次"d",字符串中要写成‘\d‘,那么正则里就要写成"\\d",这样就太麻烦了。
这个时候我们就用到了r‘d‘这个概念,此时的正则是r‘\d‘就可以了 ("r"表示取消所有转义)
(七)贪婪匹配 贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配
<.*> 默认为贪婪匹配模式,会匹配尽量长的字符串
<.*?> 加上?为将贪婪匹配模式转为非贪婪匹配模式,会匹配尽量短的字符串
(八)惰性匹配 ( 元字符+量词+"?") 最少匹配次数
如果后面有条件,条件内匹配最少的, 表示匹配任意长度的字符遇到标识就立刻停止 (爬虫需要)
(九)小数
d+.?d+ 有纰漏 (12.)
d+(.d+)? 牢记
二.re模块
模块:操作某一个确实存在的内容的python方式
re模块:如何用python操作正则
1.re.findall("正则","待匹配字符串")
2.re.search("正则","带匹配字符串") 返回一个对象,赋值给变量ret ; 通过ret.group()获取匹配的字符串
如果字符串没有匹配,则返回None.
import re
ret=re.findall(‘d+‘,"fhjgh56556jjj87878")
print(ret) # 返回所有满足匹配条件的结果,放在列表里
print(ret)
ret=re.search("d+","gdhgjh767676hjhljljj898989")
print(ret.group())
以上是关于python全栈开发 * 29知识点汇总 * 180712的主要内容,如果未能解决你的问题,请参考以下文章
python全栈开发 * 22 知识点汇总 * 180703
python全栈开发 * 18 面向对象知识点汇总 * 180530