目录正则表达式正则表达式普通字符作为原子非打印字符作为原子通用字符作为原子作用非常大通用字符作为原子作用非常大原子表几个原子组成一个原子表几个原子组成一个元字符元字符模式修正符模式修正符贪婪模式和懒惰。。。。。。。
目录
# 正则表达式
#普通字符作为原子
#非打印字符作为原子
# 通用字符作为原子(作用非常大)
# 原子表(几个原子组成一个)
# 元字符
# 模式修正符
# 贪婪模式和懒惰模式
# 正则表达式函数
#示例:匹配.com和.cn网址
#示例:匹配电话号码
# 正则表达式
1
2
|
import re
str ="weidongliang"
|
#普通字符作为原子
1
2
3
|
pat ="wei"
rsr=re.search(pat,str)
print(rsr)
|
#非打印字符作为原子
#\n:换行符 \t:制表符
1
2
3
4
5
6
|
str ='''baidusdfs
baidu
'''
pat="\n"
rest=re.search(pat,str)
print(rest)
|
# 通用字符作为原子(作用非常大)
- \w:匹配任何字母,数字,下划线
- \W:除匹配任何字母,数字,下划线
- \d:十进制数字
- \D:除十进制数字
- \s:空白字符
- \S:除空白字符
1
2
3
|
string="taobao4 59454baidu"
pat="\w\d\s\d\d"
print(re.search(pat,string))
|
# 原子表(几个原子组成一个)
1
2
3
4
|
string="taobao4 59454baidu"
pat="tao[zub]ao"
pat="tao[^zuq]ao"
print(re.search(pat,string))
|
# 元字符
-
. :出换行外任意一个字符
-
\^ :开始位置
-
\$ :结束位置
-
\* :0\\1\\多次
-
?:0\\1次
-
\+ :1\\多次
-
\{n\} :恰好n次
-
\{n,\} :至少n次
-
\{n,m\}:至少n,最多m
-
| :模式选择符
-
\(\) :模式单元
1
2
3
4
5
|
wei="taoyun14524baidu"
pat="tao.un"
pat="bai..$"
ce=re.search(pat,wei)
print(ce)
|
# 模式修正符
-
I 匹配时忽悠大小写 \*
-
M 多行匹配 \*
-
L 本地化识别匹配
-
U Unicode
-
S 让.匹配包括换行符 \*
1
2
3
4
|
str="Python"
pat="pyt"
ce=re.search(pat,str,re.I)
print(ce)
|
# 贪婪模式和懒惰模式
# 默认是贪婪模式
1
2
3
4
5
6
7
|
str="pythony"
pat="p.*y" #贪婪模式,模糊
pat2="p.*?y" #懒惰模式,精准
ce=re.search(pat,str,re.I)
ce2=re.search(pat2,str,re.I)
print(ce)
print(ce2)
|
# 正则表达式函数
#1,match 重头开始匹配
1
2
3
4
|
str="poyajgsdabskjdbaiush"
pat="p.*?y"
ce=re.match(pat,str,re.I)
print(ce)
|
#2,search 任何地方都可以匹配
#3,全局匹配函数
1
2
|
str="efdrpoyajgspnyskjdbapyth"
pat="p.*?y"
|
# 全局匹配格式re.compile(正则表达式).findall(数据)
1
2
|
ce=re.compile(pat).findall(str)
print(ce)
|
#示例:匹配.com和.cn网址
1
2
3
4
|
string="<a href='http://www.baidu.com'>百度</a>"
pat="[a-zA-Z]+://[^\s]*[.com|.cn]"
ce=re.search(pat,string)
print(ce)
|
#示例:匹配电话号码
1
2
3
4
|
string="adsgdiasdiauhdaj012-754745745dasd0773-46853415adasda"
pat="\d{4}-\d{7}|\d{3}-\d{8}"
ce=re.compile(pat).findall(string)
print(ce)
|