菜菜之正则表达式

正则表达式就是描述字符串排列的一套规则。(re模块)
python中的正则表达式链接
https://www.cnblogs.com/tina-python/p/5508402.html

基础知识

1、原子

原子是正则表达式最基本的组成单位,每个正则表达式中至少包含一个原子。
原子的种类:普通字符、非打印字符(如换行符)、通用字符、原子表
(1)普通字符作为原子

import re
pattern="yue"
string="http://yum.qianyue.com"
result1=re.search(pattern, string)
print(result1)

(2)非打印字符
略略略
(3)通用字符作为原子

符号 含义
\w 匹配任意一个字母、数字和下划线
\W 匹配除任意一个字母、数字和下划线以外的任意一个字符
\d 匹配任意一个十进制数
\D 匹配除十进制数以外的任意一个其他字符
\s 匹配任意一个空白字符
\S 匹配除空白字符以外的任意一个其他字符

(4)原子表
在python中,原子表由[]表示,比如[xyz]就是一个原子表,这个原子表定义了三个原子,这3个原子地位平等。如[xyz]py对应的源字符串是“xpython”,代表的是除了中括号的原子均可以匹配。如[^xyz]py就可以匹配apython但是不可以匹配xpython

2、元字符

在这里插入图片描述
(1)任意匹配元字符

import re
import string
pattern=".python..."
string="abcdfphp345pythony_py"
result=re.search(pattern, string)
print(result)

(2)边界限制元字符
(3)限定符

import re
import string
pattern1="py.*n"
pattern2="cd{2}"
pattern3="cd{2,}"
pattern4="cd{3}"
string="abcdddfphp345pythony_py"
result1=re.search(pattern1, string)
result2=re.search(pattern2, string)
result3=re.search(pattern3, string)
result4=re.search(pattern4, string)
print(result1)
print(result2)
print(result3)
print(result4)

(4)模式选择符
模式选择符“|”使用模式选择符,可以设置模式选择符,可以设置多个模式,匹配时,可以选择任意一个模式匹配。

import re
import string
pattern1="python|php"
string="abcdddfphp345pythony_py"
result1=re.search(pattern1, string)
print(result1)

正则表达式成功从源字符串中匹配到了结果“php”
(5)模式单元符
可以使用()将一些原子组合成一个大原子使用,小括号括起来的部分会被当一个整体使用。

3、模式修正

在这里插入图片描述

import re
import string
pattern1="python"
pattern2="python"
string="abcdddfphp34Pythony_py"
result1=re.search(pattern1, string)
result2=re.search(pattern2, string, re.I)
print(result1)
print(result2)

一个关于模式修正的小例子,result2可以识别到Python

4、贪婪模式与懒惰模式

贪婪模式的核心就是尽可能多的匹配,懒惰模式的核心点就是尽可能少的匹配Orz
.*
.*?

import re
import string
pattern1="p.*y"#贪婪模式
pattern2="p.*?y"#懒惰模式
string="abcdddfphp34Pythony_py"
result1=re.search(pattern1, string)
result2=re.search(pattern2, string)
print(result1)
print(result2)

5、正则表达式常见函数

常见的正则表达式函数有re.match()、re.search()、全局匹配函数、re.sub()函数
re.match(pattern,string,flag):如果想要从源字符串的起始位置匹配模式可以使用

import re
string="apythonhellomypythonhispythonourpythonend"
pattern=".pyhton."
result=re.match(pattern, string)
#result=re.match(pattern, string).span()
print(result)
print(result2)

re.search():与re.match()类似,使用该函数进行匹配,会扫描整个字符串并进行匹配,该函数与match最大的不同是re.match()函数是从原字符串的开头进行匹配,而re.search()函数会在全文在进行检索并匹配

import re
string="hellomypythonhispythonourpythonend"
pattern=".python."
result=re.match(pattern, string)
result2=re.search(pattern, string)
print(result)
print(result2)

相应结果。
None
<re.Match object; span=(6, 14), match=‘ypythonh’>

全局匹配函数:在全局匹配可以一次性匹配多个符合模式
先对模式进行预编译,然后在相应的字符串里使用findall()函数进行查找,输出

import re
string="hellomypythonhispythonourpythonend"
pattern=re.compile(".python.")#预编译
result=pattern.findall(string)#找到符合模式的所有结果
print(result)

re.sub()函数:替换函数

import re
string="hellomypythonhispythonourpythonend"
pattern="python"
result1=re.sub(pattern, "php", string)#替换所有
result2=re.sub(pattern, "php", string,2)#最多替换两次
print(result1)
print(result2)

常见实例,pdf75页

匹配url网址、电话号码、电子邮件地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值