python 正则表达式详解
一、元字符
. 句号匹配任意单个字符
[] 匹配方括号内的任意字符
[^] 否定的字符种类
* 匹配0次或无限次
+ 匹配1次或无限次
? 匹配0次或一次
{n,m} 匹配num个大括号之前的字符(n<=num<=num)
(xyz) 匹配与xyz完全相等的字符串,每个字符串都是and关系
| 或运算符
\ 转义字符
^ 从字符串开头位置开始匹配
$ 从字符串未端开始匹配
二、字符匹配
\d 匹配数字
\D 不匹配数字
\s 匹配空白字符
\S 与\s相反
\w 匹配中文、下划线、数字、英文
\W 与\w相反
\b 匹配单词的开始或结束
\B 与\b相反
三、匹配模式参数
1).re.l 忽略大小写
2).re.M 多行模式,改变'^'和'$' 的行为
3).re.S 点任意匹配模式,改变'.'的行为
4).re.L 是预定字符类\w\W\b\B\s\S 区域设定
5).re.U 是预定字符类\w\W\b\B\s\S\d\D 取决于unicode定义
6).re.X 详细模式。这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释
四、方法
re.findall
▪匹配出字符串中所有与指定值相关的值
▪以列表的形式返回
▪未匹配则返回空列表
#!/usr/bin/python
#author bobo
#_*_ coding: utf-8 _*_
import json
import re
filename='info1.log'
dict1={}
with open(filename) as fh:
for line in fh:
hanzi=re.compile('')
##print(line)
result=re.compile('"phoneNum":"[0-9]+"')
str=result.findall(line)
print(str)
匹配出号码['"phoneNum":"1317588****"']
re.match
re.match 尝试从字符串的起始位置匹配一个模式
如果不是起始位置匹配成功的话,match()就返回none
re.search
扫描整个字符串并返第一个成功的匹配
re.search(pattern, string, flags=0)
re.compile
re.compile 是将正则表达式转换为模式对象
re.sub 替换字符串
re.sub('被替换的','替换成的',a)