7.2 正则贪婪模式

#coding=utf-8
#2018-7-2 11:25:00

import re
#写一个邮箱正则
p = r"(w+)@(163|126|gmail|qq).(com|cn|net)$"
r = re.match(p,"itcast@qq.com")
print(r)
b = r.group()
print(b)
# (?P<name>) 分组起名字
#(?P = name) 引用别名为name分组匹配到字符串

s = "<html><h1>itcast</h1></html>"

c = re.match(r"<((?P<key1>).+)><(?P<key2>).+>.+</(?P=key2)></(?P=key1)>",s)
print(c )

#用sub讲匹配到的数据进行替换

ret  = re.sub(r"d+",'988','python = 997')
print(ret )

#split 根据匹配进行切割字符串,并返回一个列表
s = "itcast:php,python,cpp-java"

a = re.split(r":|,|-",s)
print(a)

#python的贪婪模式
"""
三个引号之间部分python仍然可以读取,
只是没有运行,并且字符串保存格式
"""

f = """
<div>
        <p>岗位职责:</p>
<p>完成推荐算法、数据统计、接口、后台等服务器端相关工作</p>
<p><br></p>
<p>必备要求:</p>
<p>良好的自我驱动力和职业素养,工作积极主动、结果导向</p>
<p>&nbsp;<br></p>
<p>技术要求:</p>
<p>1、一年以上 Python 开发经验,掌握面向对象分析和设计,了解设计模式</p>
<p>2、掌握HTTP协议,熟悉MVC、MVVM等概念以及相关WEB开发框架</p>
<p>3、掌握关系数据库开发设计,掌握 SQL,熟练使用 MySQL/PostgreSQL 中的一种<br></p>
<p>4、掌握NoSQL、MQ,熟练使用对应技术解决方案</p>
<p>5、熟悉 Javascript/CSS/HTML5,JQuery、React、Vue.js</p>
<p>&nbsp;<br></p>
<p>加分项:</p>
<p>大数据,数理统计,机器学习,sklearn,高性能,大并发。</p>

        </div>
"""
r = re.sub(r"<.+>","",f)  #非贪婪模式
print(r)

7.2 正则贪婪模式

 1 #方法有很多种,要多动脑筋!!!
 2 
 3 #提取其中的url
 4 url = """<img data-original="https://rpic.douyucdn.cn/appCovers/2016/11/13/1213973_201611131917_small.jpg"
 5  src="https://rpic.douyucdn.cn/appCovers/2016/11/13/1213973_201611131917_small.jpg">
 6 """
 7 #当你拿到数据比较多,是因为贪婪模式在作怪
 8 search  = re.search(r"https.+?.jpg",url).group()
 9 print(search)
10 
11 #提取网站 http://www.interoem.com/
12 url1 = "http://www.interoem.com/messageinfo.asp?id=35"
13 #逆向:正解的时候后面一串不好提取,前面好提取,.
14 #所以先把前面定义好,然后用个匿名函数,去第一部分就好了
15 r2 = re.sub(r"(http://.+?/).*",lambda x: x.group(1),url1)
16 print(r2)
17 
18 word = "hello  world ha ha"
19 #从分隔符的角度
20 print(re.split(r" +",word))
21 #描述单词特征的角度
22 print(re.findall(r"[a-zA-z]+",word))