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全栈之路6--正则表达式

Python全栈之路Day8

西游之路——python全栈——Django的form组件初识

我的全栈之路-Java架构师技术栈

全面解析JS字符串和正则表达式中的matchreplaceexec等函数

7Python全栈之路系列之面向对象运算符重载