设为首页 加入收藏

TOP

day5模块学习--re正则模块(一)
2017-09-30 17:00:33 】 浏览:638
Tags:day5 模块 学习 --re 正则

1. 正则表达式基础

1.1. 简单介绍

    正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了。

    下图展示了使用正则表达式进行匹配的流程:  http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html

   

 

    正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。如果表达式中有量词或边界,这个过程会稍微有一些不同,但也是很好理解的,看下图中的示例以及自己多使用几次就能明白。

    下图列出了Python支持的正则表达式元字符和语法:

   

    1.”.“匹配任意除换行符以外的字符

    >>> string = "abafsdafd\nafdasfd"         #包含换行符
  >>> string1 = "adfasdfadfasdfwer12345656耿"     #不包含换行符
  >>> import re  
  >>> m = re.search(".+",string)           #验证是否可以匹配换行符
  >>> m.group()
  'abafsdafd'

    >>> n = re.search(".+",string1)
  >>> n.group()
  'adfasdfadfasdfwer12345656耿'
    从上面输出结果可以看出,”.“是匹配任意除了换行符的字符。遇到"\n"换行符即终止匹配。

    2.”\"转义字符

    转义字符,使后一个字符改变原来的意思。如果字符串中有*号需要匹配,可以使用\*或者字符集[*],"a\.c"代表匹配a.c  "a\\c"代表匹配a\c

    >>> str_num = "22.567979mafdasdf"
  >>> m = re.search("\d+\.\d+",str_num)
  >>> m.group()
  '22.567979'
    我们知道,"."在python中代表的含义是除了"\n"之外的所有字符,如果这里不进行转义的话,匹配出来的就是任意非"\n"字符,因此要使用"\"进行转义。

    >>> string = "dfafdasfd\fafdasfda"
  >>> string
  'dfafdasfd\x0cafdasfda'
    在python中,如果字符串中包含"\",有时候会显示不出来,或者修改后面的内容,把别人改变了,这个不知道在Linux平台上是怎么回事。

    3.[...]字符集(字符类)   
    [...]:字符集(字符类)对应的位置可以是字符集中任意字符。字符集中的字符可以逐个列出[0,1,2,3,4,5,6,7,8,9],也可以给出范围[0-9]。第一个字符集如果是^表示取反,如[^abc]表示不是abc的其他字符。

    所有的特殊字符在字符集中都失去其原有的特殊意义。在字符集中如果要使用]、或^,可以在前面加上"\"反斜杠,或把]\、-放在第一个字符,把^放在非第一个字符。

    >>> string = "dafdafdasf[adfas^fad"

    >>> m = re.search("[a-z]+\[",string)
  >>> m.group()
  'dafdafdasf['
    从上面脚本可以看出,如果要匹配[要在前面加上"\"转义字符。

    >>> m = re.search("\w+[[]",string)      (1)在字符集中匹配"["
  >>> m.group()
  'dafdafdasf['
    >>> n = re.search("w+[\[]",string)      (2)转义匹配,验证在字符集中匹配[是否需要加[\]
  >>> n.group()
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
  AttributeError: 'NoneType' object has no attribute 'group'
    在字符集中如果要使用]、或^,可以在前面加上"\"反斜杠,或把]\、-放在第一个字符,把^放在非第一个字符。
    预定义字符集

    1.\d数字

    >>> m = re.search("\d",string)
  >>> m.group()
  '1'
    \d是匹配数字,等价于[0-9]
    2.\D非数字  &nbs

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

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目