python self-study-class18(down)-regular expressions (with common regular expressions)! ! ! ! !

1. The two styles used by match

#第一种风格
import re
'''
print(re.match("abc","abc")) #匹配,左边第一个开始算起来
print(re.match("abcx","abc"))#匹配不成功None,匹配成功返回位置等详细信息
print(re.match("abc","abcx"))

#match严格匹配,从第一个开始,"abc","abcdefg"出现一次
matchobj=re.match("abc","abcdefg")
print(matchobj)
print(type(matchobj))
print(matchobj.group(0))  #挖掘的第一个匹配的
'''

line = "txm is a boy not a girl"
matchobj=re.match(r"(.*) is (.*) not (.*)",line) #.代表任意字符不包含换行,*代表一个或多个
print(matchobj)          #详细的匹配
print(matchobj.group(0))
print(matchobj.group(1))
print(matchobj.group(2))
print(matchobj.group(3))
#第二种风格
import re
#re 预编译
pat=re.compile("(.*)----(.*)")   #预编译起到加速作用
line="84151351----511231"
matchchobj=pat.match(line)
print(matchchobj.group(0))
print(matchchobj.group(1))
print(matchchobj.group(2))

2. Search

import re
'''
print(re.match("abc","abc xyz"))
print(re.match("xyz","abc xyz"))  #匹配从第一个开始

print(re.search("abc","abc xyz"))  #搜索包含就可以
print(re.search("xyz","abc xyz"))
'''
searchobj=re.search(r"(.*)-is-(.*)","abc xyz-is-go")
print(searchobj)
print(searchobj.group())
print(searchobj.group(1))
print(searchobj.group(2))

3.findall(important!!!)

import re
QQstr="""
ぷ恆分離線	
★群主☆瑾爷
937226695	男	12年	2012年5月以前	潜水(0)	2019/04/08	
2	
Ailee	
★之音☆♀小琦
1435967048	女	10年	2012年5月以前	潜水(0)	2016/09/25	
3	
十四。	
★之音☆秋燕
517791799	女	12年	2013/06/16	潜水(0)	2016/04/30	
4	
☆念想☆	
1374801362	男	6年	2016/04/30	冒泡(2)	2021/01/13	
5	
梦想	
★之音☆玲儿
250748705	女	11年	2012年5月以前	潜水(0)	2016/10/21	
6	
心碎孤独。。。。。	
★动漫☆XX 
517131366	男	12年	2012年5月以前	潜水(0)	2012/09/13	
7	
木子李	
★之音☆林月
610981205	女	13年	2012年5月以前	潜水(0)	-	

"""
searchobj=re.findall("[1-9]\\d{4,10}",QQstr)
print(searchobj)

4. Mailbox extraction:

import re
EmailList="""
txm0 # 13341612369 # [email protected]
txm1 # 13325623123 # [email protected]
txm2 # 13342452316 # [email protected]
txm3 # 13345426844 # [email protected]
txm0 # 13345216561 # [email protected]
txm1 # 13834562313 # [email protected]
txm2 # 13394565666 # [email protected]
txm3 # 13934563223 # [email protected]
txm4 # 13234561544 # [email protected]
txm5 # 13323456322 # [email protected]
txm6 # 13342154456 # [email protected]
txm7 # 13341563311 # [email protected]
txm5 # 13103458416 # [email protected]
txm4 # 13301456562 # [email protected]
txm4 # 13345426512 # [email protected]
txm1 # 13346984815 # [email protected]
"""
#按照套路写
searchobj1=re.findall("1[34578]\\d{9}",EmailList)  #手机号
print(searchobj1)
regexmail=re.compile("([A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4})",re.IGNORECASE)#表达式复杂时必须预编译
maillist=regexmail.findall(EmailList)#邮箱
print(maillist)

5.spilt cutting

'''
line="51512----23123123123x10" #字符串切割
linelist=line.split("----")
print(linelist)
'''
import re
line1="213   1  nan  20  177  本科   未婚     电子"
mylist1=re.split("\\s+",line1)  #空白字符
print(mylist1)
line2="a,b c;d"
mylist2=re.split(r"[\s\,\;]",line2)  #三个符号选一个进行切割
print(mylist2)

6.filter screening and shielding

import re
for data in re.finditer("\\d+","232-326*56515a"):  #筛选检索
    print(data.group())
print("------")
for data in re.finditer("[a-zA-Z]+","232-326*56515a"):  #筛选检索
    print(data.group())
print("------")
for data in re.finditer("[法轮功]","法轮功djaishda法轮功dniasid法令"):  #屏蔽
    print(data.group())
print("------")
for data in re.finditer("[^法轮功]","法轮功djaishda法轮功dniasid法令"):  #屏蔽
    print(data.group())

7. Interception and replacement

import re
safest ="全能神 全能神"
safeststr=re.subn("全能神","社会主义接班人",safest) #删除则替换为空""
print(safeststr)   #将相关内容替换
print(safeststr[0])
print(safeststr[1])
print("-----")
safest1 ="2134 53453 24532 434231"
safeststr=re.subn("\\d+","社会主义",safest1) #灵活运用
print(safeststr)   #将相关内容替换
print(safeststr[0])
print(safeststr[1])
print("-----")
safest1 ="2134 53453 24532 434231"
safeststr=re.sub("\\d+","社会主义",safest1) #sub没有次数统计
print(safeststr)   #将相关内容替换

Appendix: Commonly used regular expression
rookie tutorial
cnblogs

Guess you like

Origin blog.csdn.net/weixin_46837674/article/details/113480922