Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2137765
  • 博文数量: 103
  • 博客积分: 206
  • 博客等级: 入伍新兵
  • 技术积分: 1819
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-12 10:24
个人简介

效字当先,以质为本。

文章分类
文章存档

2019年(2)

2018年(4)

2017年(7)

2016年(3)

2015年(14)

2014年(33)

2013年(31)

2012年(9)

分类: Python/Ruby

2014-09-05 01:10:27

正则用的也不少,但过几天不用就又忘记了,而且细节东西从来没注意过,记录下,方便下次查看;
1、匹配数字:\d,匹配字母:\w,如果大写就是反向取,比如\D就是非数字,\W就是非字母。这两个用的比较多,记下来;
2、贪婪模式和非贪婪模式:
例子:re.findall(r"a(\d+?)""a23b") 结果是:['2']
      re.findall(r"a(\d+)""a23b") 结果是:['23']
这里加“?”就是非贪婪模式,匹配到一个就停止;
但区别于下面这个,因为后面有个字母结束的限制:


3、search,match,findall区别
match 是匹配字符串的开始位置,匹配到就返回匹配值,匹配不到就返回NONE;
如下图,认真对比看下就明白了:


search 是匹配整个字符串:



4、如果你要多行匹配,那么加上re.S和re.M标志

re.S 将会匹配换行符,默认.不会匹配换行符,所以抓取网页时,如果有换行符的,请加上re.S吧,否则匹配不到哦;


re.M ^$标志将会匹配每一行,默认^和$只会匹配第一行;


这里的re.M只对^起作用;

先整理到这里了;睡觉!




















阅读(4935) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

dsy8510092014-12-23 10:46:39

加一条正则相关的:
import re
a = "253664dfdfdf3\n3gg"
reg = r'\d.*?'
//可以这样,在compile中加入flag标志;
rt = re.compile(reg,re.S)
list = re.findall(rt,)
//也可以这样,不用compile;
list = re.findall(reg,a,re.S)

//不能这样,以因为使用了compile后不能在re.findall中加flag;
rt = re.compile(reg)
list = re.findall(rt,a,re.S)