正则表达式的总结

首先向大家强烈推荐一个在线检测正则表达式的链接:Online regex tester and debugger: PHP, PCRE, Python, Golang, JavaScript

+、?、*、{min,max}这四种数量匹配,单独使用时,他们就是贪婪模式(会回溯)。如果在他们后面加上一个?,就变为了懒惰模式(会回溯)。如果在他们后面加上一个+,就变为了独占模式(不会回溯)。

易错点:千万不要在正则表达式中加入空格!!!

以下是常用的正则用法:(对于复杂的正则表达式,要涉及一些贪婪模式、懒惰模式、独占模式以及回溯)

import re

print(re.match("^Chen", "Chenronghua"))
print(re.match("^Chen", "Chenronghua").group())
if "hen" in "Chenronghua":
    print("000")   
print(re.match("^Chend", "Chen321ronghua123").group())
print(re.match("^Chend+", "Chen321ronghua123").group())
print(re.match("^.+d", "Chen321ronghua123").group())
# re.match是从字符串开头匹配,所以它默认是从第一个字符匹配,即^没有用;当返回None时,调用group时会报错。
print(re.match("^r.+", "Chen321ronghua")) #这个时匹配不到的
###############################################################

# re.research是从整个文本里进行搜索
# 其中^表示在整个字符串中的开头,$表示整个字符串中的结尾
# 他会尽可能的取,一直到没有符合的为止
# 转义符的意思就是告诉解释器,你不要解释它,就把他当成一个简单的字符就行了
print(re.search("r.+a", "Chen321ronghua123").group())
print(re.search("r[a-z]+a", "Chen321ronghua123a").group())
print(re.search("r[a-zA-Z]+a", "Chen321rongHaaaaaaaua123a").group())
# #是匹配?前一个字符一次或零次
print(re.search("aaa2?", "aaa2lex"))
print(re.search("a?", "lex"))
print(re.search("[0-9]{3}", "aa1a2le345x").group())
print(re.search("[0-9]{1,3}", "aa1a2le345x").group())
print(re.search("abc{2}", "222abccc").group())
print(re.search("abc|ABC", "ABC22abc").group())
print(re.search("(abc){2}(||=){2}", "abcabc||=||=").group())
# s匹配空白符、	、
、

print(re.search("s+", "abc	 
aa"))
# 一种装逼的应用
print(re.search("(?P<id>[0-9]+)(?P<uid>[a-zA-Z]+)", "acs1233adcer#").groupdict())
print(re.search("(?P<id>[0-9]+)(?P<uid>[a-zA-Z]+)", "acs1233adcer#").group('id'))
print(re.search("(?P<place>[0-9]{6})(?P<birthday>[0-9]{8})", "158693199910223875").groupdict())

#############################################################
print(re.findall("abc|ABC", "ABC23abc"))
# re.findall的作用是找出所有符合条件的内容
print(re.findall("[0-9]{1,3}", "aa1a2le345x"))
print(re.findall("[0-9]{3}", "aa1a2le3425x"))
print(re.findall("[0-9]{1,3}", "aa1a2le3425x"))

##################################################################
# re.split是将字符串分割成多个,放在列表中
print(re.split("[0-9]", "ad24ghr5t622ee")) #这样会有空的元素出现,加上+就可以了
print(re.split("[0-9]+", "ad24ghr5t622ee"))

##################################################################
# re.sub将匹配到的值替换成新值,它没有group函数
print(re.sub("[0-9]+", "|", "34dg4ggdrg54v"))
# 如果我想要将匹配得到的前两个进行替换,得加一个参数count
print(re.sub("[0-9]+", "|", "34dg4ggdrg54v", count=2))
原文地址:https://www.cnblogs.com/czz0508/p/10563875.html