python正则表达式笔记

发布于 / 生活 / 0 条评论
import re
string = 'taoyunjiaoyu'

# 普通字符做为原子

pat = 'yun'

rst = re.search(pat, string)
print(rst)

# 非打印字符作为原子
# \n 换行符  \t 制表符

string ="""taoyunjiaoyu
baidu
"""
pat = '\n'
rst = re.search(pat, string)
print(rst)

# 通用字符作为原子

'''
\w 字母、数字、下划线
\W 除字母、数字、下划线
\d 十进制数字
\D 除十进制数字
\s 空白字符
\S 除空白字符

'''

string = 'taoyunji8 7362387aoyubaidu'
pat ='\w\d\s\d\d'
rst = re.search(pat, string)
print(rst)

# 原子表
string = 'taoyunji87362387aoyubaidu'
pat ='tao[^xyz]'
rst = re.search(pat, string)
print(rst)

# 元字符
'''
.除换行外任意一个字符
^开始位置 [^]非
$结束位置
*0\1\多次
?0\1次
+ 1\多次
{n}恰好n次
{n,}至少n次
{n,m}至少n次,至多m次
|模式选择符或
()模式单元

'''

string = 'taoyunnnji87362387aoyubaidu'
pat = 'yun{3,}'
rst = re.search(pat, string)
print(rst)

# 模式修正符
'''
I 匹配时忽略大小写*
M 多行匹配*
L 本地化识别匹配
U unicode
S 让.匹配包括换行*

'''
string = "Python"
pat = 'pyt'
rst = re.search(pat, string, re.I)
print(rst)

# 贪婪模式与懒惰模式

string = "pythony"
pat1 = 'p.*y'
pat2 = 'p.*?y'
rst1 = re.search(pat1, string, re.I)
rst2 = re.search(pat2, string, re.I)
print(rst1, rst2)


# 正则表达式函数
# 1.match  # 从头开始匹配
string = "poythonyhjskjsa"
pat2 = 'p.*?y' # 懒惰模式,精准
rst = re.match(pat2, string, re.I)
print(rst)
# 2.rearch  # 不限制开始位置

# 3.全局匹配函数

string = "hgpoythpnyhjsptjhgjykjsa"
pat = 'p.*?y'# 懒惰模式,精准
# 全局匹配格式re.commpile(正则表达式).findall(数据)
rst = re.compile(pat).findall(string)
print(rst)
['poy', 'pny', 'ptjhgjy']

# 实例:匹配.com和.cn网址
string = "<a href='http://www.baidu.com'>百度首页</a>"
pat = '[a-zA-Z]+://[^\s]*[.com|.cn]'
rst = re.compile(pat).findall(string)
print(rst)
['http://www.baidu.com']

# 实例:匹配电话号码
string ="jsthajsdhk021-8928874997678328jhdjskgjkh0773-776257672360kjcxdhkj"
pat = "\d{4}-\d{7}|\d{3}-\d{8}"
rst = re.compile(pat).findall(string)
print(rst)

['021-89288749', '0773-7762576']




 

转载原创文章请注明,转载自: 哲玺要挺猛 » python正则表达式笔记
Not Comment Found