一大堆文本中提取其中指定的数据,用正则表达式
1.字符串相关-
'wxy’匹配文本中的wxy
import re text='你好,我叫wxy,英文名为angle,你可以叫我wxy或者angle' data_list=re.findall('wxy',text) print(data_list) #['wxy', 'wxy'] -
[abc],匹配文本中的a或b或c字符
import re text='你好,我叫wxy,英文名为angle,你可以叫我wxy或者angle' data_list=re.findall('[abc]',text) print(data_list) #['a', 'a'] -
[^abc],匹配处理abc以外的字符
import re text='你好,angle' data_list=re.findall('[^abc]',text) print(data_list) #['你', '好', ',', 'n', 'g', 'l', 'e'] -
[a-z],匹配a-z任意字符
import re text='你好,angle' data_list=re.findall('[a-z]',text) print(data_list) #['a', 'n', 'g', 'l', 'e'] -
. ,代指除换行符以外的任意字符
import re text='你好,angle,an' data_list=re.findall('a.',text) print(data_list)# ['an'] -
w,代指字母或数字或下划线(汉字)
import re text='你好,a_n_g_le' data_list=re.findall('w',text) print(data_list) #['你', '好', 'a', '_', 'n', '_', 'g', '_', 'l', 'e'] -
d,代指数字
import re text='你好,2698959795用户' data_list=re.findall('d',text) print(data_list) #['2', '6', '9', '8', '9', '5', '9', '7', '9', '5'] -
s,代指任意空白符,空格等
import re text='你好t,26989用户n' data_list=re.findall('s',text) print(data_list) #['t', 'n']
-
*,重复0次或多次
import re text='你好,我叫wxy,你可以叫我wy' data_list=re.findall('wx*y',text) print(data_list) #['wxy', 'wy'] -
+,重复一次或多次
import re text='你好,我叫wxy,你可以叫我wy' data_list=re.findall('wx+y',text) print(data_list) #['wxy'] -
?,重复0或1次
import re text='你好,我叫wxy,你可以叫我wy或wxxxy' data_list=re.findall('wx?y',text) print(data_list) #['wxy', 'wy'] -
{n},重复n次
import re text='2698959795' data_list=re.findall('26989d{5}',text) print(data_list) #['2698959795'] -
{n,},至少重复n次
import re text='2698959795' data_list=re.findall('26989d{1,}',text) print(data_list) #['2698959795'] -
{n,m},重复n到m次
import re text='2698959795' data_list=re.findall('26989d{1,3}',text) print(data_list) #['26989597']
-
提取数据区域
import re text='2698959795@qq.com' data_list=re.findall('(26989d+)@qq.com',text) print(data_list) #['2698959795'] -
获取指定区域+或条件
import re text='2698959795@qq.com,26989612@qq.com' data_list=re.findall('((269895d+|6d+)@qq.com)',text) print(data_list) #[('2698959795@qq.com', '2698959795'), ('6989612@qq.com', '6989612')]
-
findall,获取匹配的所有数据
import re text='你好,我叫wxy,英文名为angle,你可以叫我wxy或者angle' data_list=re.findall('wxy',text) print(data_list) #['wxy', 'wxy'] -
match,从起始开始匹配,匹配成功返回一个对象,未匹配成功返回None
import re text='你好,我叫wxy,英文名为angle,你可以叫我wxy或者angle' data_list=re.match('你好',text) print(data_list) #print(data_list.group()) #你好 -
search,浏览整个字符串去匹配第一个,未匹配成功返回None
import re text='你好,我叫wxy,英文名为angle,你可以叫我wxy或者angle' data_list=re.search('wxy',text) print(data_list) #print(data_list.group()) #wxy -
sub,替换匹配成功的位置
import re text='你好,我叫wxy,你可以叫我wxy或者angle' data_list=re.sub('wxy','小红',text) data_list1=re.sub('wxy','小红',text,1) print(data_list) #你好,我叫小红,你可以叫我小红或者angle print(data_list1) #你好,我叫小红,你可以叫我wxy或者angle -
split,根据匹配成功的位置分割
import re text='你好,我叫wxy,你可以叫我wxy或者angle' data_list=re.split('wxy',text) data_list1=re.split('wxy',text,1) print(data_list) #['你好,我叫', ',你可以叫我', '或者angle'] print(data_list1) #['你好,我叫', ',你可以叫我wxy或者angle'] -
finditer
import re text='你好,我叫wxy,英文名为angle,你可以叫我wxy或者angle' data_list=re.finditer('wxy',text) for i in data_list: print(i,i.group()) #wxy # wxy



