首页 > 其他 > 详细

正则表达式的总结

时间:2019-03-20 11:51:12      阅读:149      评论:0      收藏:0      [点我收藏+]

首先向大家强烈推荐一个在线检测正则表达式的链接: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("^Chen\d", "Chen321ronghua123").group())
print(re.match("^Chen\d+", "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匹配空白符、\t、\r、\n
print(re.search("\s+", "abc\t \r\naa"))
# 一种装逼的应用
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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!