python--------------正则表达式,re模块

import re

# phone_number = input("请输入电话号码:")
# if re.match('^(13|15|18|19)[0-9]{9}$',phone_number):
#     print('身份合法')
# else:
#     print('不合法')
#字符组 :[字符],在同一个位置可能出现的各种字符组成一个字符组
#一个字符组里可以出现多个规则。

#所有的量词都要用在正则规则的后面,只约束量词前面的正则。



'''re模块'''
#findall 返回所有满足匹配条件的结果,放在列表中
regt = re.findall('[a-z]+','eva egon yuan')
print(regt)  #结果: ['eva', 'egon', 'yuan']

#函数会在字符串内查找模式匹配,只要找到第一个匹配就返回一个
#包含匹配信息的对象,该对象可以通过.group()方法得到匹配的字符串
#如果字符串没有匹配,则返回None,调用.group()会报错
ret = re.search('a','gave egong dfdfa').group()
print(ret) #结果:  a

# 从头开始匹配,如果正则规则从头开始可以匹配上,就返回一个变量,
# 其它与serach相同
rett = re.match('a','aef gegfa daa').group()
print(rett)

 爬虫例子

import re
from urllib.request import urlopen

def getPage(url):
    response = urlopen(url)
    return response.read().decode('utf-8')

def parsePage(s):
    ret = re.findall(
        '<div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>\d+).*?<span class="title">(?P<title>.*?)</span>'
       '.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>',s,re.S)
    return ret

def main(num):
    url = 'https://movie.douban.com/top250?start=%s&filter=' % num
    response_html = getPage(url)
    ret = parsePage(response_html)
    print(ret)

count = 0
for i in range(10):   # 10页
    main(count)
    count += 25

# url从网页上把代码搞下来
# bytes decode ——> utf-8 网页内容就是我的待匹配字符串
# ret = re.findall(正则,带匹配的字符串)  #ret是所有匹配到的内容组成的列表

详细内容查看地址:

http://www.cnblogs.com/Eva-J/articles/7228075.html

猜你喜欢

转载自www.cnblogs.com/xiangrikuidebuluo/p/9540229.html
今日推荐