一大堆文本中提取其中指定的数据,用正则表达式
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,a\n' 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('26989\d{5}',text) print(data_list) #['2698959795']
-
{n,},至少重复n次
import re text='2698959795' data_list=re.findall('26989\d{1,}',text) print(data_list) #['2698959795']
-
{n,m},重复n到m次
import re text='2698959795' data_list=re.findall('26989\d{1,3}',text) print(data_list) #['26989597']
-
提取数据区域
import re text='[email protected]' data_list=re.findall('(26989\d+)@qq.com',text) print(data_list) #['2698959795']
-
获取指定区域+或条件
import re text='[email protected],[email protected]' data_list=re.findall('((269895\d+|6\d+)@qq.com)',text) print(data_list) #[('[email protected]', '2698959795'), ('[email protected]', '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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)