书到用时方恨少-- 正则,待修

最近的正则表达式用的,讲真的真是一言难尽啊。想要好好整理一下。待修

呃 首先呢,什么是re呢?

 re 是 Regular Expression的简称  换言之就是可以用re来表示正则表达式。

基础篇:

print(re.findall("w","1。ab,e《g——g_g"))#匹配数字字母下划线
print(re.findall("W","*;56。.,"))#匹配非数字字母下划线
print(re.findall("s"," f"))#匹配任意空白字符
print(re.findall("S"," f"))#匹配任意非空白字符
print(re.findall("d","123**"))#匹配任意的数字
print(re.findall("D","123**"))#匹配任意的非数字
print(re.findall("Ad","123* bc"))#从字符串开始处匹配(取一个)
print(re.findall("d","123abc*9 "))#从字符串结束处匹配 注意把写在表达式右边(取一个)
print(re.findall("^d","123* bc"))#从字符串开始处匹配
print(re.findall("d$","123*39"))#匹配字符串尾部
print(re.findall(" "," 9999n"))#匹配
print(re.findall(" "," 999 9n"))#匹配
print(re.findall("^d","1 9999n"))#从字符开始匹配数字

范围匹配:

print(re.findall("[abc]","AaBbc"))#匹配a-c
print(re.findall("[^abc]","AaBbc"))#匹配非a-c
print(re.findall("[0-7]","A8953aBbc"))#匹配数字0-7
print(re.findall("[A-z]","AaBbc"))#匹配A-z

重复匹配:

print(re.findall("[A-Za-z]","123*
 a  f g bc"))#从字符串开始处匹配,[]范围匹配 中间用 - 来连接
#如果要匹配符号-要写正在字符表达式左边或右边
print(re.findall("[Za-]","123* a f g bc"))
#重复匹配 表达式来怕匹配次数得到
# + * 贪婪匹配,表达式匹配尽可能多拿(一直匹配 直到不满足为止)
# * 表示任意次数 所以0次也满足
print(re.findall("[A-Za-z]*","123* a f g lll bc"))
# + 表示一次或多次
print(re.findall("[A-Za-z]+","123* a f g lll bc"))
#从全文范围取一个
print(re.search("([a-zA-Z]+)(_dsb)","xsdasf sddf_dsb ljkkl_dsb dagsgfgf"))
#从开始的位置开始匹配
print(re.match("([a-zA-Z]+)(_dsb)","xsdasf sddf_dsb ljkkl_dsb dagsgfgf"))
#将正则表达式 编译成一个对象 往后可以不用再写表达式 直接开始匹配
print(re.compile("w*").findall("abcdef"))

非贪婪匹配&贪婪匹配:

# ? 表示0次或1次
print(re.findall("[A-Za-z]?","123* a f g lll bc"))

#自定义匹配次数{1,}1到无穷 {,1}0到1
print(re.findall("[A-Za-z]{1,9}","123* a f g lll bc afsagsd"))

#分组 加上分组 不会改变原来的规则 仅仅是将括号中的内容取出来
print(re.findall("([A-Za-z]+)_dsb","egon_dsb exyx_dsb yyy_xxk"))
#定义text网址。。。演示贪婪匹配
text="""<img src="https://ss1.baidu.comaaaasdffghjkhgfdsaasdf"adfsgahghg>"""
print(re.findall('src="http.*"',text))

#非贪婪匹配 再表达式后面加上?
print(re.findall('src="http.*?"',text))

#取出指定內容後面的信息
print(re.findall(r'token=(.S+)', token_text))

替换:

print(re.sub("python","PYTHON","js|python|java")) #用PYTHON替换python

#用正则表达式来替换位置
text="java|C++|js|C|python"
pattern="(.+?)(|.+)(.+)"
# print(re.search(pattern,text).group())
#手机号验证
# print(re.match("1[0-9]{10}$","15383880339"))
print(re.match("[0-9]{10}$","15383880339"))
原文地址:https://www.cnblogs.com/yanhui1995/p/10791684.html