正则表达式与模式匹配
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
第四行将字符拆分成列表,列表中的每个元素都是一个单词。re.compile函数将文本形式的模式编译成为编译后的正则表达式。(非必须但可以显著提高程序运行速度)re.I确保模式不区分大小写的,同时在字符串中匹配the和The。原始字符串r可以确保python不处理字符中的转译字符串。创建count来确保字符串中模式出现的次数,初试值设为0。再下一行是for循环语句,在列表变量string_list的各个元素之间进行迭代,re.search函数将列表中的每个单词与正则表达式进行比较,意思是:如果单词与正则表达式匹配,那么count的值就加一。
后面的例子除了点问题,但是我认为正则表达式比较重要,特别是在爬虫中可能会用到,所以先好好研究一下哈😳😳😳
使用python的re模块,尽管不能满足所有复杂的匹配情况,但足够在绝大多数情况下能够有效地实现对复杂字符串的分析并提取出相关信息。python 会将正则表达式转化为字节码,利用 C 语言的匹配引擎进行深度优先的匹配。使用re的一般步骤是先将正则表达式的字符串形式编译为Pattern实例,然后使用Pattern实例处理文本并获得匹配结果(一个Match实例),最后使用Match实例获得信息,进行其他的操作。
语法:re.compile(strPattern[, flag])
这个方法是Pattern类的工厂方法,用于将字符串形式的正则表达式编译为Pattern对象。 第一个参数strPattern为正则表达式,第二个参数flag是匹配模式,取值可以使用按位或运算符'|'表示同时生效,比如re.I | re.M。另外,你也可以在regex字符串中指定模式,比如:re.compile('(?im)pattern')
re.compile('pattern', re.I | re.M) 与re.compile('(?im)pattern') 是等价的。
flag参数可选值有:
简写全名注释
I 忽略大小写
M 多行模式
S 单选模式——点任意匹配模式
L 使预定字符类 \w \W \b \B \s \S 取决于当前区域设定
U 使预定字符类 \w \W \b \B \s \S \d \D 取决于unicode定义的字符属性
X 详细模式。该模式下正则表达式可以是多行,忽略空白字符,并可以加入注释。
Match
当需要提取的内容只有一个,或是只需要获取第一次成功匹配的内容时,可以使用Match()方法。当使用Match()方法时,只要在某一位置匹配成功,就不再继续尝试匹配,并返回一个Match类型的对象。注意:Match只从位置0开始匹配,除非使用Pattern对象指定pos参数。
虽然Match()只是取一次匹配,但是可以通过捕获组来获取多个指定子串。
Match属性
1、string:匹配时使用的文本。
2、re:匹配时使用的Pattern对象。
3、pos:文本中正则表达式开始搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
4、endpos:文本中正则表达式结束搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
5、lastindex:最后一个被捕获的分组在文本中的索引。如果没有被捕获的分组,将为None。
6、lastgroup:最后一个被捕获的分组的别名。如果这个分组没有别名或者没有被捕获的分组,将为None。
Match方法
1、group([group1, …])
获得一个或多个分组截获的字符串;指定多个参数时将以元组形式返回。group1可以使用编号也可以使用别名;编号0代表整个匹配的子串;不填写参数时,返回group(0);没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串。
从以上例子中需掌握以下知识点:
a、group()等于group(0),代表整个匹配的子串。
b、group(1)代表编号为1的捕获组内容;group(2)代表编号为2的捕获组内容。
c、指定多个参数时,以tuple形式返回。
d、普通捕获组与命名捕获组没有混合编号规则。捕获组的编号统一是按照“(”出现的顺序,从左到右,从1开始进行编号的。
总结:group就是返回捕获的内容。参数0或无参数表示整个正则表达式捕获的文本,1表示第1个括号匹配的内容,2表示第2个括号匹配的内容,以此类推。
2、groups([default])
以元组形式返回全部分组截获的字符串。相当于调用group(1,2,…last)。default表示没有截获字符串的组以这个值替代,默认为None。
exit()
今天先到这了,年轻人要学会用搜索引擎,也不能太晚睡,要不对身体不好还找不到女朋友😭😭😭。再给夜里的你们普及一下固态硬盘颗粒的区别
SLC:Single-LevelCell,1bit/cell,速度快寿命长,价格超贵,约10万次擦写寿命.
MLC:Multi-LevelCell,2bit/cell,速度一般寿命一般,价格一般,约3000-5000次擦写寿命
TLC:Trinary-LevelCell,3bit/cell,速度慢寿命短,价格便宜,约1000次擦写寿命。
QLC:Quad-LevelCell,4bit/cell,工艺尚不成熟。
bye
网友评论