一、正则的常用符号:
. 匹配任一字符,换行符n除外
* 匹配前一个字符0次或无限次
? 匹配前一个字符0次或1次
.* 贪心算法(尽可能多的匹配)
.*? 非贪心算法(尽可能少的匹配)
() 括号内的数据作为结果返回
二、正则表达式:
w匹配字母数字及下划线W匹配非字母数字及下划线s匹配任意空白字符,等价于 [tnrf].S匹配任意非空字符d匹配任意数字,等价于 [0-9].D匹配任意非数字A匹配字符串开始Z匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串。z匹配字符串结束G匹配最后匹配完成的位置。b匹配一个单词边界,也就是指单词和空格间的位置。例如, 'erb' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。B匹配非单词边界。'erB' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。n, t, 等.匹配一个换行符。匹配一个制表符。等1...9匹配第n个分组的内容。10匹配第n个分组的内容,如果它经匹配。否则指的是八进制字符码的表达式。三、函数的用法
1、检索和替换
Python 的 re 模块提供了re.sub用于替换字符串中的匹配项。
re.sub(pattern, repl, string, count=0, flags=0) pattern : 正则中的模式字符串。repl : 替换的字符串,也可为一个函数。string : 要被查找替换的原始字符串。count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
如下替换如下url中的第一个数字2为3:
import re
url = "http://search.chinahr.com/sh/job/pn2/?key=%E9%87%91%E8%9E%8D"
newurl = re.sub('d+','3',url,count=1)
print newurl
2、findall 方法
match 和 search 方法都是一次匹配,只要找到了一个匹配的结果就返回。然而,在大多数时候,我们需要搜索
整个字符串,获得所有匹配的结果,这时需要用到findall:
findall(pattern,string)
如下一个匹配对应网页中数字的实例:
import re
str = "http://maoyan.com/films?showType=1&offset=0"
num = re.findall('d+Z' ,str)[0]
print(num)
作者:frank_zyp
您的支持是对博主最大的鼓励,感谢您的认真阅读。
本文无所谓版权,欢迎转载。