python正则表达式

导入

正则表达式(或RE)是一种小型的,高度专业化的编程语言,它内嵌在python中,并通过re模块实现。
–可以为想要匹配的相应字符串集指定规则
–该字符串集可能包含英文语句,e-mail地址,命令或任何你想要得到的数据
–可以问诸如“这个字符串匹配该模式吗?”;“在这个字符串中是否有部分匹配该模式呢?”
–可以使用RE以各种方式来修改或分隔字符串。

定义

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字
符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来 表达对字符串的一种过滤逻辑。
正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则
表达式的概念,Python同样不例外,利用了正则表达式,我们想要从返回的页
面内容提取出我们想要的内容就易如反掌

import re
#(1) 普通字符作为原子
pattern="shu"
string="http://xioahongshu.com"
result=re.search(pattern,string)
print(result)

<_sre.SRE_Match object; span=(15, 18), match='shu'>

#(2)非打印字符作为原子
#一些字符串用于格式控制的符号,比如换行符
pattern="\n"
string="""http://xiaohongshu.com
http://xiaohongshu.com
"""
result=re.search(pattern,string)
print(result)

<_sre.SRE_Match object; span=(22, 23), match='\n'>

#(3):通用字符作为原子
#pattern="23python_"#这样写也可以,但还有另外一个比较好的方法
#23是数字,匹配用到\d\d或者是\d{2},匹配下划线用\w
pattern="\d\dpython\w"
#pattern="\d{2}python\w"#这样也是可以的
string="hhushfjs123python_py"
result=re.search(pattern,string)
print(result)

<_sre.SRE_Match object; span=(9, 18), match='23python_'>

#(4):原子表(字符集)
#pattern="\d\dpython[^zxy]"
pattern="\d\dpython[_zxy]"
string="hhushfjs123python_py"
result=re.search(pattern,string)
print(result)

<_sre.SRE_Match object; span=(9, 18), match='23python_'>

#(5)元字符
#除了[--]和[^--]是字符集,之外,那张表上其他字符都是元字符
pattern="python..."
pattern="python.*"

<_sre.SRE_Match object; span=(9, 18), match='23python_'>


#(6)边界限定符
pattern="^abc"#匹配开头是否是abc,如果没有就会返回None

pattern="py$"#匹配末尾是py,如果没有就会返回None
<_sre.SRE_Match object; span=(18, 20), match='py'>

#(7)次数限定符
pattern="py.*"#贪婪模式,只要符合条件就会匹配,尽可能匹配多的次数
string="abcshfjs123python_pyasdf"
result=re.search(pattern,string)
print(result)

pattern="py.*?y"#非贪婪模式,尽可能减少匹配多的次数
string="abcshfjs123python_pycyasdf"
<_sre.SRE_Match object; span=(11, 22), match='python_pycy'>

pattern="abc{2,4}"#贪婪模式,只要符合条件就会匹配,尽可能匹配多的次数,这里{}里面的次数是指的前一个字符
string="abccccccshfjs123python_pycyasdf"

<_sre.SRE_Match object; span=(0, 6), match='abcccc'>

pattern="(abc){2}"
string="abcabcccccshfjs123python_pycyasdf"
result=re.search(pattern,string)
print(result)

<_sre.SRE_Match object; span=(0, 6), match='abcabc'>

#(8)模式选择符
pattern="python|hfj"
string="abccccccshfjs123python_pycyasdf"
result=re.findall(pattern,string)
print(result)

['hfj', 'python']

模式及函数

这里写图片描述
这里写图片描述
这里写图片描述

练习

#匹配到电话号码
#021-6789456710000 匹配八位
#0423-12345678923  匹配七位

pattern="\d{3}-\d{8}|\d{4}-\d{7}"
string="021-6789456710000"
#string="0423-12345678923"
result=re.search(pattern,string)
print(result)

<_sre.SRE_Match object; span=(0, 12), match='021-67894567'>
<_sre.SRE_Match object; span=(0, 12), match='0423-1234567'>


#匹配电子邮箱
#shih998_SH@163.com
#SSS_II@qq.vip.com

pattern="\w+@\w+(\.\w+){1,2}"
string="SSS_II@qq.vip.com"
result=re.search(pattern,string)
print(result)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值