正则表达式

import re
str1='wangluochongcheng1601gaoxingyuan'
#普通字符为原子
pat1='gaoxingyuan'
res1=re.search(pat1,str1)
#print(res1)

#非打印字符为原子'\n':换行符   '\t':制表符
str2='''wangluochongcheng1601gaoxingyuan
'''
pat2='\n'
res2=re.search(pat2,str2)
#print(res2)

#通用字符作为原子
#'\w':字母,数字,下划线
#'\W'除字母,数字,下划线以外的任意字符
#'\d'十进制数
#'\D'除十进制数以外的任意字符
#'\s'空白字符也就是空格
#'\S'除空白字符以外的任意字符

#从str3中提取出一个3个字母和4个数字和1个除字母数字下划线外的字符的字符串
'''
str3='974195045gao08.'
pat3='\w\w\w\d\d\d\d\W'
res3=re.search(pat3,str3)
print(res3)

'''

#原子表[]:只能从原子表中选一个原子出来
'''
str4='974195045gao08.'
pat4='974195[and0jkc]45'
res4=re.search(pat4,str4)
print(res4)
'''
#[^and0jkc]代表非里面的元素,除里面的元素以外
#所以如果pat4=[^and0jkc]将不能匹配成功

#元字符
'''
. 除换行符外任意一个字符
pat='gao.....'

^ 匹配字符串开始的位置
pat='^974'

$ 匹配字符串结束的位置
pat='21.$'

* 前面的那个字符出现0\1\多次
pat='gao*'

?前面的那个字符出现0\1次
pat='gao?'

+ 前面的那个字符出现1\多次
str='974195045gaooooo0821.'
pat='gao+'

{n} 前面的那个字符恰好出现n次,n为数字
pat='gao{5}'

{n,} 前面的那个字符至少出现n次
pat='gao{3,}'匹配出来会是他的最高次数的字符串
比如上面的str会匹配出gaooooo

{n,m} 前面的字符至少出现n次,至多出现m次
 
| 模式选择符 或

() 模式单元

'''

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

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

#贪婪模式与懒惰模式
#默认的模式就时贪婪模式
'''
string='poythony'
#贪婪模式
pat1='p.*y'
#懒惰模式
pat2='p.*?y'
rst1=re.search(pat1,string,re.I)
rst2=re.search(pat2,string,re.I)
print(rst1)
print(rst2)
'''

#正则表达式函数
# re.match()  re.search() 全局匹配函数 re.sub()

#re.match() 只能从头开始匹配
'''
string='poythony'
pat='p.*?y'
#pat='o.*?y'将不能匹配
rst=re.match(pat,string)
print(rst)
'''
#全局匹配格式 re.compile(正则表达式).findall(数据)
'''
string='poytphonypdsay'
pat='p.*?y'
rst=re.compile(pat).findall(string)
print(rst)
'''
#实例:匹配.com和.cn网址
#[\S]或[^\s]都可以表示非空
'''
string="<a href='http://www.baidu.com'>百度首页</a>"
pat="[a-zA-z]+://[\S]*[.com|.cn]"
rst=re.compile(pat).findall(string)
print(rst)
'''
#实例:匹配电话号码
#/d表示只匹配十进制数
'''
number='dsanjkl123nmkldnsa021-12355512dxca0731-5581313dsa9234'
pat="\d{4}-\d{7}|\d{3}-\d{8}"
rst=re.compile(pat).findall(number)
print(rst)

'''












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值