正则表达式

实例:

匹配字符串:

import re

content = 'Hello 123 4567 World_This is a Regex Demo'

# match()
# 第一个参数传入正则表达式,第二个参数传入要匹配的字符串
result = re.match('^Hello\s\d{3}\s\d{4}\s\w{10}',content)
print(result)
# group可以输出匹配的内容
print(result.group())
# span()方法可以输出匹配的范围
print(result.span())

下面介绍一下“'^Hello\s\d{3}\s\d{4}\s\w{10}'”的用法:

^    是匹配字符串的开头,也就是匹配以Hello开头

\s    是匹配空白字符,用来匹配目标字符串的空格

\d    是匹配数字,三个\d匹配到了123

\d{4}    调用四次前面的方法

\w{10}    匹配10个字母以及下划线

 

匹配内容

content = 'http://weibo.com/comment/kEraCN'
result1 = re.match('http.*?comment/(.*?)',content)
result2 = re.match('http.*?comment/(.*)',content)
print('result1',result1.group())
print('result2',result2.group())

观察输出结果,可以看到.*?没有匹配到任何内容,.*则进来匹配多的内容,得到了匹配结果。

 

修饰符

实例:

import re

content = '''Hello 1234567 World_this
is a Regex Demo
'''

result = re.match('^He.*?(\d+).*?Demo$',content,re.S)
print(result.group())


re.I    使匹配对大小写不敏感
re.L    使本地化识别匹配
re.M    多行匹配,影响^和$
re.S    使.匹配包括换行在内的所有字符
re.U    根据Unicode字符集解析字符。
常用的有re.S和re.I

转义匹配

实例:

import re

content = '(百度)www.baidu.com'
# 当遇到用于正则匹配的特殊字符时,在前面加反斜线转义一下即可。
result = re.match('\(百度\)www\.baidu\.com',content)
print(result)

提取链接

import re
content = '<a href="提示我这个链接地址">sflkj</a>'
Pattern = re.compile(r'href="(.*?)"')
result = Pattern.findall(content)[0]
print( result)

验证手机号是否正确

import re

# 验证手机号是否正确

phone_num = re.compile('^(13\d|14[5|7]|15\d|166|17[3|6|7]|18\d)\d{8}$')

while True:
    phone = input('请输入您的手机号:')

    result = re.search(phone_num, phone)
    if result:
        print('正常手机号',phone)
    else:
        print('不是手机号')

实例

import re
content = "123#456@abccccc@d"
pattern = re.compile(r'@|#')
result = pattern.split(content)
print(result)


content = "(a+b)*(a1-b1)/2"

# pattern = re.compile(r'[a-zA-Z]+\d*')
pattern = re.compile(r'[a-z]\w*')
result = pattern.findall(content)
print(result)

加号+和星号*的作用

元字符+表示之前紧邻的元素可以出现一次或多次。

元字符*表示之前紧邻的元素可以出现任意多次,甚至不出现。


*表示匹配尽可能多的次数。
+的意思是匹配尽可能多的次数,但是至少要匹配一次,如果连一次也无法匹配,则匹配失败。

匹配这样一段字符串:

<a οnclick="AddTab('/Cjjjy_Action.do?activity=getData&amp;reportDm=SB_CJJYFJSSB&amp;ssq=YD&amp;fzlx=2&amp;sssq_q=20190201&amp;sssq_z=20190228','城建税、教育费附加、地方教育附加税(费)申报');">城建税、教育费附加、地方教育附加税(费)申报</a>

匹配a标签中的空号中的两个字符串。

re.findall("AddTab\('(.*?)'\)", res)

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值