17.python全栈之路:正则表达式全面解析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了17.python全栈之路:正则表达式全面解析相关的知识,希望对你有一定的参考价值。
正则表达式
一.认识正则表达式
正则表达式是什么 ?
正则表达式是一门单独的语音,不仅属python,很多语言都可以调用它,它自成体系
正则表达式有什么用呢?
首先我们看一下python自带的字符串的一些功能方法
str1 = "abcdefg" result1 = str1.find("b") result2 = str1.find("bc") result3 = str1.split("b") result4 = str1.replace("ab", "AB") print("b的位置是:%s" % result1) print("bc的位置是:%s" % result2) print("字符串以b分割成:%s" % result3) print("字符串替换后的结果是:%s" % result4)
我们可以观察得到,无论是查找,分割,或者替换都需要明确具体的元素
而正则表达式可以给出一个pattern,符合要求的可以有很多,不仅仅局限唯一
二.正则表达式的元字符及其意义
. :匹配任意除换行符的单个字符
^:行首锚定
$:行尾锚定
*:匹配任意次,贪婪匹配 等价于{0,}
+:匹配1到多次,贪婪匹配 降价与{1,}
?:匹配0或1次,贪婪匹配 降价与{0,1}
{}:固定次数
{3}:3次
{3,5}:3到5次
\:
1.反斜杠后边跟元字符去掉特殊功能
2.反斜杠后边跟普通字符实现特殊功能
\d:匹配任何单个十进制数,它相当于类[0-9],匹配一个数字
\D:匹配任何单个非数字字符,它相当于[^0-9]
\s:匹配任何单个空白字符,它相当于类[ \t\n\r\f\v]
\S:匹配任何单个非空白字符,它相当于[^ \t\n\r\f\v]
\w:匹配任何单个字母数字字符;它相当于类[a-zA-Z0-9]
\W:匹配任何单个非字母数字字符,它相当于类[^a-zA-Z0-9]
\b:匹配一个单词边界,也就是指单词和空格间的位置
3.引用序号对应的字组所匹配的字符串
re.search(r"(alex)(eric)com\2", "alexericcomeric").group()
‘alexericcomeric‘
[]:字符集中的任意一个,字符集中的元字符不用转义
^:字符集中的^表示非
re.findall(‘[^1-9]‘,‘a1b2c3‘)
[‘a‘, ‘b‘, ‘c‘]
\:转义的普通字符\d,\w,\s等用法不变
re.findall(‘[\d]‘,‘ww3 wa8.d0‘)
[‘1‘, ‘2‘, ‘3‘]
():分组,将一串字符做为一个整体
贪婪模式:
re.search(r"a(\d+)","a12345678b").group()
a12345678
非贪婪模式:
re.serach(r"a(\d+?)","a12345678b").group()
a1
三.贪婪模式的存在机制
re.findall(r"a(\d+?)", "a23b") #非贪婪模式
[‘2‘] #匹配括号里面的
re.findall(r"a(\d+)b", "a23b") #如果前后均有限定条件,则不按非贪婪模式匹配
[‘23‘]
re.findall(r"a(\d+?)b", "a23b") #如果前后均有限定条件,则不按非贪婪模式匹配
[‘23‘]
re.findall(r"a(\d+)", "a23b") #贪婪模式
[‘23‘]
以上是关于17.python全栈之路:正则表达式全面解析的主要内容,如果未能解决你的问题,请参考以下文章
西游之路——python全栈——Django的form组件初识