zoukankan      html  css  js  c++  java
  • re模块

    常用正则表达式符号:
    '.'     默认匹配除
    之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
    '^'     匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","
    abc
    eee",flags=re.MULTILINE)
    '$'     匹配字符结尾,或e.search("foo$","bfoo
    sdfsf",flags=re.MULTILINE).group()也可以
    '*'     匹配*号前的字符0次或多次,re.findall("ab*","cabb3abcbbac")  结果为['abb', 'ab', 'a']
    '+'     匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 结果['ab', 'abb']
    '?'     匹配前一个字符1次或0次
    '{m}'   匹配前一个字符m次
    '{n,m}' 匹配前一个字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 结果'abb', 'ab', 'abb']
    '|'     匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 结果'ABC'
    '(...)' 分组匹配,re.search("(abc){2}a(123|456)c", "abcabca456c").group() 结果 abcabca456c
      
      
    'A'    只从字符开头匹配,re.search("Aabc","alexabc") 是匹配不到的
    ''    匹配字符结尾,同$
    'd'    匹配数字0-9
    'D'    匹配非数字
    'w'    匹配[A-Za-z0-9]
    'W'    匹配非[A-Za-z0-9]
    's'     匹配空白字符、	、
    、
     , re.search("s+","ab	c1
    3").group() 结果 '	'
      
    '(?P<name>...)' 分组匹配 re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{4})","371481199306143242").groupdict("city") 结果{'province': '3714', 'city': '81', 'birthday': '1993'}
    最常用的匹配语法:
    re.match 从头开始匹配
    re.search 匹配包含
    re.findall 把所有匹配到的字符放到以列表中的元素返回
    re.split 以匹配到的字符当做列表分隔符
    re.sub      匹配字符并替换

    用re.match表示匹配的条件是从头开始匹配,有的话返回匹配出的字符串,不匹配的话返回None,

    re.search表示从要匹配的字符串中搜索与匹配条件相匹配的字符串返回

    macth和search两个语法如果不加group的话返回的是匹配成功的对象,要想返回的是具体的结果的话,应该在匹配的语句后加上group,而且只返回一个结果。

    re.findall表示将所有匹配的都返回,这个语法不需要加group,返回的结果是列表

    re.sub表示将匹配的条件用一个字符串替代

    re.split表示将满足匹配条件的返回字符串以列表的方式返回。

    如果要返回的结果为字典的形式的话,应该用groupdict的语法格式。

    示例代码如下:

    import  re
    
    a = re.findall('d+','goser12rui234sdf')
    b = re.split('d+','goser12rui234sdf')
    c = re.sub('d+','@','goser12rui234sdf')
    d = re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{4})","371481199306143242").groupdict()
    print  a
    print  b
    print  c
    print  d
    

    运行结果为:

    ['12', '234']
    ['goser', 'rui', 'sdf']
    goser@rui@sdf
    {'province': '3714', 'city': '81', 'birthday': '1993'}
    
  • 相关阅读:
    hdu 3342 Legal or Not 拓排序
    hdu 1596 find the safest road Dijkstra
    hdu 1874 畅通工程续 Dijkstra
    poj 2676 sudoku dfs
    poj 2251 BFS
    poj Prime Path BFS
    poj 3278 BFS
    poj 2387 Dijkstra 模板
    poj 3083 DFS 和BFS
    poj 1062 昂贵的聘礼 dijkstra
  • 原文地址:https://www.cnblogs.com/goser/p/7088825.html
Copyright © 2011-2022 走看看