设为首页 加入收藏

TOP

day5模块学习--re正则模块(三)
2017-09-30 17:00:33 】 浏览:639
Tags:day5 模块 学习 --re 正则
匹配不到,则会返回错误。

    2.“+”    匹配前一个字符一次或无限次    前一个字符(牢记,只是匹配前面一个)

    >>> import re
  >>> string = "naefda曾 LmKDS 1316547\n\t\r@@3$&^$"
    >>> m = re.search("\w+",string)
  >>> m.group()
  'naefda曾'
  >>> n = re.search("\s+",string)
  >>> n.group()
  ' '
  >>> d = re.search("更",string)
  >>> d.group()
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
  AttributeError: 'NoneType' object has no attribute 'group'
    从上面可以看出,"+"是匹配前一个字符一次或无限次,如果匹配不到,则返回None

    3."?"   匹配前一个字符0次或一次        前一个字符(牢记,只是匹配前面一个)

    >>> import re
  >>> string = "naefda曾 LmKDS 1316547\n\t\r@@3$&^$"
  >>> m = re.search("\w?",string)
  >>> m.group()
  'n'
  >>> n = re.search("f?",string)
  >>> n.group()
  ''
    从上面可以看出,?是以贪婪的方式进行匹配。?是匹配前一个字符0次或1次。从上面的例子中发现一个问题,即"?"和"*"都是从头开始进行匹配,如果开头匹配不到,就返回"",等价于如果使用search()出现”?"和“*”等价于使用match()从头开始匹配,找不到则不找了,不一样的是match()返回的是None,而seach()返回的是""。

    4.{m}   代表匹配前一个字符m次        前一个字符(牢记,只是匹配前面一个)

    >>> import re

    >>> string = "dafMM\n更1134657Qqcd m,l#!"
  >>> m = re.search("\d{4}",string)        #代表匹配数字四次
  >>> m.group()
  '1134'

    >>> n = re.search("\d{10}",string)
  >>> n.group()
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
  AttributeError: 'NoneType' object has no attribute 'group'

    从上面可以看出,如果匹配不到,则返回None;{m}是代表匹配前一个字符m次,要注意在匹配的时候,我们可以像下面一样设定一个匹配区间,这样就不会出现匹配超标的情况。

    5.{m,n}    匹配一个字符m次至n次         前一个字符(牢记,只是匹配前面一个)

    m和n可以省略,如省略m({,n})则匹配0到n次;若省略n({m,}),则匹配m至无限次。

    >>> import re

    >>> string = "dafMM\n更1134657Qqcd m,l#!"

   >>> m = re.search("\d{1,10}",string)
  >>> m.group()
  '1134657'
  >>> n = re.search("\d{,5}",string)
  >>> n.group()
  ''
  >>> d = re.search("\d{4,}",string)
  >>> d.group()
  '1134657'
    从上面可以看出,{m,n}是匹配在一个范围内的个数,但是我们也发现了一个问题,千万不要让正则表达式匹配包含0次的情况,一旦匹配0次,那么就会出现如果开头匹配不到之后,就不匹配的情况,直接返回""。

    *? +? ?? {m,n}?使*,+,?,{m,n}变成非贪婪模式。

    边界匹配

    1.^  匹配字符串开头,在多行模式中,匹配第一行的开头

    >>> import re

    >>> string = "dafMM\n更1134657Qqcd m,l#!"

    >>> m = re.search("^da",string)
  >>> m.group()
  'da'

    开头匹配,相当于使用match()进行匹配了。

    2.$    匹配字符串末尾,在多行模式中匹配每一行的末尾  

    >>> import re

  &n

首页 上一页 1 2 3 4 5 下一页 尾页 3/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python列表的增删改查排嵌套特殊.. 下一篇学习笔记TF035:实现基于LSTM语言..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目