Python中的正则表达式

前言

正则表达式作为一种字符串匹配逻辑,在此不做赘述。本文的重点,并不是正则表达式,而是在Python中使用正则表达式。

Re模块

Python 自带了re模块,它提供了对正则表达式的支持。主要用到的方法列举如下

#返回pattern对象
re.compile(string[,flag])  
#以下为匹配所用函数
re.match(pattern, string[, flags])
re.search(pattern, string[, flags])
re.split(pattern, string[, maxsplit])
re.findall(pattern, string[, flags])
re.finditer(pattern, string[, flags])
re.sub(pattern, repl, string[, count])
re.subn(pattern, repl, string[, count])

举个例子

# -*- coding: utf-8 -*-
 
#导入re模块
import re
 
# 将正则表达式编译成Pattern对象,注意hello前面的r的意思是“原生字符串”
pattern = re.compile(r'hello')
 
# 使用re.match匹配文本,获得匹配结果,无法匹配时将返回None
result1 = re.match(pattern,'hello')
result2 = re.match(pattern,'helloo CQC!')
result3 = re.match(pattern,'helo CQC!')
result4 = re.match(pattern,'hello CQC!')

其中,只有result3会为false。

举个大例子

要求

获取糗事百科首页的所有jpg图片的url

code

import urllib2
import re

# create header
page = 1
url = 'http://www.qiushibaike.com/hot/page/' + str(page)
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = { 'User-Agent' : user_agent }
# get original page
request = urllib2.Request(url,headers = headers)
response = urllib2.urlopen(request).read()
# complie image and jpg tag
pattern = re.compile(r'<img\ssrc="//[^\s]*.jpg')
# find all out
result = re.findall(pattern, response)
# print result
if result:
    for r in result:
        index = len(r)
        print r[12:index]

else:
    print 'match none'

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云飞学编程

Python基础之常用格式化输出字符详解

写代码的时候经常会遇到使用格式化字符的情况,这里将常用的三种情况:%s、%d和%f 用代码给大家详细说明下:

911
来自专栏py+selenium

python爬虫常用正则表达式组合匹配

正则表达式在线测试工具:http://tool.oschina.net/regex/?optionGlobl=global

1001
来自专栏chenssy

多线程:为什么在while循环中加入System.out.println,线程可以停止

这个我们都知道,由于 stopReqested 的更新值在主内存中,而线程栈中的值不是最新的,所以会一直循环,线程并不能停止。加上 Volatile 关键字后,...

664
来自专栏java思维导图

深入了解Java之虚拟机内存

用来指示程序执行哪一条指令,这跟汇编语言的程序计数器的功能在逻辑上是一样的。JVM规范中规定,如果线程执行的是非native方法,则程序计数器中保存的是当前需要...

643
来自专栏nnngu

017 Java中的静态代理、JDK动态代理、cglib动态代理

一、静态代理 代理模式是常用设计模式的一种,我们在软件设计时常用的代理一般是指静态代理,也就是在代码中显式指定的代理。 静态代理由业务实现类、业务代理类两部分组...

3273
来自专栏Golang语言社区

Golang语言--包的概念、导入与可见性

go中包的概念、导入与可见性 ? 包是结构化代码的一种方式:每个程序都由包(通常简称为 pkg)的概念组成,可以使用自身的包或者从其它包中导入内容。 如同其它一...

3635
来自专栏Micro_awake web

vue的计算属性computed和监听器watch

823
来自专栏黑泽君的专栏

java基础学习_多线程02_多线程、设计模式_day24总结

621
来自专栏我的博客

PHP反射机制

PHP反射机制它是用来导出或提取出关于类、方法、属性(私有保护等属性也能获取)、参数等的详细信息,包括注释。 <?php class Test{ ...

3177
来自专栏JAVA高级架构

深入了解 Java 之虚拟机内存

在讨论JVM内存区域分析之前,先来看一下Java程序具体执行的过程: ? Java 程序的执行过程:Java 源代码文件(.Java文件)-> Java Com...

3327

扫码关注云+社区