正则表达式

 

 

原生字符串

Python中字符串前加上r表示原生字符串 ,与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰。

假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\":前两个和后两个分别⽤于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。

Python的原生字符串很好地解决了这个问题,有了原始字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。

 

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

import re

str1 = "http:\\a:\\\\b"

print(str1)

ret = re.match(r"http:\\a", str1)
print(ret.group())

  输出

http:\a:\\b
http:\a

  

实例:匹配\n

import re
content = """line1
kjhl
hknoii
dmwinds"""
ret1 = re.match(r".*", content).group()
ret2 = re.match(r".*", content, re.S).group()
print(ret1)
print("------------")
print(ret2)

  输出

line1
------------
line1
kjhl
hknoii
dmwinds

  

 

 

 

实例:验证一个163邮箱的合法性

import re

def main():

    email = input("请输入一个邮箱地址:")

    ret = re.match(r"^[a-zA-Z0-9_]{4,20}@163\.com$",email)

    if ret:
        print("%s为合法的邮箱"%email)
    else:
        print("%s为不合法的邮箱"%email)

if __name__ == "__main__":
    main()

 

 

实例:验证一个163或126邮箱的合法性

import re

def main():

    email = input("请输入一个邮箱地址:")

    ret = re.match(r"^[a-zA-Z0-9_]{4,20}@(163|126)\.com$",email)

    if ret:
        print("%s为合法的邮箱"%email)
    else:
        print("%s为不合法的邮箱"%email)

if __name__ == "__main__":
    main()

  

实例:分组

import re

html_str = "<h1>hello</h1>"

ret = re.match(r"<(\w*)>(.*)</(\w*)>", html_str).group(2)

print(ret)

  输出

hello

  

 实例:分组

import re

html_str = "<h1>hello</h1>"

ret = re.match(r"(<\w*>).*(\1)", html_str).group()

print(ret)

  输出

<h1>hello</h1>

  

实例:分组

import re

html_str = "<h1><div>hello</div></h1>"

ret = re.match(r"(<\w*>)(<\w*>).*(\2)(\1)", html_str).group()

print(ret)

  输出

<h1><div>hello</div></h1>

  

 实例:分组

import re

html_str = "<h1><div>hello</div></h1>"

ret = re.match(r"<(?P<n1>\w*)><(?P<n2>\w*)>.*</(?P=n2)></(?P=n1)>", html_str).group(2)

print(ret)

  输出

<h1><div>hello</div></h1>

  

 re的高级用法

search

import re

ret = re.search(r"\d+", "阅读次数为 999")
print(ret.group())

  输出

999

  

findall

import re

ret = re.findall(r"\d+", "阅读次数为 999, 点赞数为 66")
print(ret)

  输出

['999', '66']

  

 sub 将匹配到的数据进⾏替换

import re

def add(temp):
    ret = temp.group()
    ret = int(ret) + 1
    return str(ret)

ret = re.sub(r"\d+", add, "python = 999")
print(ret)
ret = re.sub(r"\d+", add, "python = 98")
print(ret)

  输出

python = 1000
python = 99

  

实例

import re

html_str = """<dd class="job_bt">
        <h3 class="description">职位描述:</h3>
        <div class="job-detail">
        工作职责
<br>负责无人驾驶系统中,视觉感知算法方面的研发工作
<br>
<br>职位要求 (具有以下两项以上)
<br>1. 具有良好的深度学习基础,熟悉CNN网络,熟练掌握Caffe/Tensorflow/Pytorch中的一种或以上
<br>2. 精通视觉目标检测、图像分割领域算法,具有实际应用的模型调优经验
<br>3. 扎实的编程基础,熟练掌握C++,Python,熟悉OpenCV,CUDA编程
<br>4. 在无人驾驶领域有视觉研发经验的优先考虑
<br>
<br>加分项:
<br>5. 在计算机视觉/机器学习顶会CVPR,ICCV,ECCV,AAAI, NIPS等以一作发表过文章
<br>6. 作为主要成员参加视觉竞赛并取得较好成绩
        </div>
    </dd>"""

def rep(temp):
    oldstr = temp.group()
    oldstr = ""
    return oldstr

ret = re.sub(r'<.*class=".*">|<\w*>|</\w*>', rep, html_str)
print(ret)

  输出

        职位描述:
        
        工作职责
负责无人驾驶系统中,视觉感知算法方面的研发工作

职位要求 (具有以下两项以上)
1. 具有良好的深度学习基础,熟悉CNN网络,熟练掌握Caffe/Tensorflow/Pytorch中的一种或以上
2. 精通视觉目标检测、图像分割领域算法,具有实际应用的模型调优经验
3. 扎实的编程基础,熟练掌握C++,Python,熟悉OpenCV,CUDA编程
4. 在无人驾驶领域有视觉研发经验的优先考虑

加分项:
5. 在计算机视觉/机器学习顶会CVPR,ICCV,ECCV,AAAI, NIPS等以一作发表过文章
6. 作为主要成员参加视觉竞赛并取得较好成绩

  

 

转载于:https://www.cnblogs.com/xone/p/10384208.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值