• python正则表达式-re模块的爱恨情仇


    利用python的re模块,使用正则表达式对字符串进行处理

      1 # 编辑者:闫龙
      2 import re
      3 restr = "abccgccc123def456ghi789jgkl186000"
      4 #re中的方法:
      5 res=re.findall("abc",restr)
      6 #获得匹配到的字符,并转化为列表['abc']
      7 res=re.finditer("abc",restr)
      8 next(res).group()
      9 #获得匹配到的字符,并转成一个迭代器<callable_iterator object at 0x00000187BFA43DD8>
     10 
     11 res = re.search("abc",restr)
     12 res.group()
     13 #获得匹配结果对象,<_sre.SRE_Match object; span=(0, 3), match='abc'>
     14 #只匹配一个结果
     15 #通过group方法从对象中拿到结果
     16 #否则None
     17 
     18 res = re.match("abc",restr)
     19 res.group()
     20 #获得匹配对象,<_sre.SRE_Match object; span=(0, 3), match='abc'>
     21 #只匹配一个结果,而且匹配结果必须是开头
     22 #通过group方法从对象中拿到结果
     23 #否则None
     24 
     25 res = re.split("d+",restr)
     26 #获得匹配结果作为列表
     27 #按照匹配字符拆分列表['abccccc', 'def', 'ghi', 'jkl', '']
     28 res = re.split("d+",restr,2)
     29 #指定分割次数,只分两次
     30 # ['abccccc', 'def', 'ghi789jkl186000']
     31 
     32 res = re.sub("g","egonSomeBody",restr)
     33 #sub用来将匹配的结果替换为新的字符串
     34 #abccegonSomeBodyccc123def456egonSomeBodyhi789jegonSomeBodykl186000
     35 res = re.sub("g","egonSomeBody",restr,1)
     36 #指定替换次数,只替换第一个匹配结果
     37 #abccegonSomeBodyccc123def456ghi789jgkl186000
     38 
     39 res = re.compile("d+")
     40 res.findall(restr)
     41 #保存正则表达式,直接调用给字符串
     42 #['123', '456', '789', '186000']
     43 print(res)
     44 """--------------------------------------------------------------------------------------------"""
     45 #正则元字符
     46 restr = "abccccc123def456ghi789jkl186000"
     47 #  .  通配符代表除了
    换行符之外的所有字符
     48 res = re.findall(".",restr)
     49 #['a', 'b', 'c', 'c', 'c', 'c', 'c', '1', '2', '3', 'd', 'e', 'f', '4', '5', '6', 'g', 'h', 'i', '7', '8', '9', 'j', 'k', 'l', '1', '8', '6', '0', '0', '0']
     50 #任意字符匹配
     51 
     52 #^以什么字符开头的字符串
     53 res = re.findall("^abc.",restr)
     54 #['abcc'] 以abc任意字符开头的匹配字符串
     55 
     56 #$以什么字符结尾的字符串
     57 res = re.findall("00$",restr)
     58 #['00']以00结尾的匹配字符串
     59 
     60 #+重复一个或多个字符
     61 res = re.findall("c+",restr)
     62 #['ccccc'] 重复c一个或多个匹配的字符串
     63 
     64 #*重复0个或多个字符
     65 res = re.findall("c*",restr)
     66 #['', '', 'ccccc', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
     67 #重复c,0个或多个匹配的字符串,所有""全部都是0个c的
     68 
     69 #? 重复0个或1个字符
     70 res = re.findall("c?",restr)
     71 #['', '', 'c', 'c', 'c', 'c', 'c', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
     72 #重复c,0个或1个匹配的字符串
     73 
     74 #{}重复自定义次数
     75 res = re.findall("c{2,3}",restr)
     76 #['ccc', 'cc'] 匹配c,2个或者3个的字符串
     77 
     78 #[]自定义出现的字符
     79 restr = "abccccc123def456ghi666gai789jkl186000"
     80 res = re.findall("g[ha]i",restr)
     81 #['ghi', 'gai'] 匹配gh或ai的字符串
     82 res = re.findall("[0-9]+",restr)
     83 #['123', '456', '666', '789', '186000']匹配符合数字的字符串一个或多个
     84 res = re.findall("[a-z]+",restr)
     85 #['abccccc', 'def', 'ghi', 'gai', 'jkl']匹配符合字母的字符串一个或多个
     86 
     87 #()分组字符串
     88 res = re.findall("(ab)|(gh)",restr)
     89 #[('ab', ''), ('', 'gh')]匹配(ab)或者(gh)的字符串
     90 
     91 # | 或
     92 res = re.findall("g|h",restr)
     93 #['g', 'h', 'g']匹配g或者h的字符串
     94 
     95 #   转义符,应用于将特殊符号转义,或将普通字符转义
     96 #如d就是全部数字,.就是一个普通的点儿
     97 #以上为元字符的介绍和使用方法
     98 
     99 
    100 """---------------------------------------------------------------------------------------"""
    101 #d 匹配十进制数字,等同于[0-9]
    102 res = re.findall("d",restr)
    103 #['1', '2', '3', '4', '5', '6', '7', '8', '9', '1', '8', '6', '0', '0', '0']
    104 #所有匹配为十进制数字的字符串
    105 
    106 #D匹配非数字,等同于[^0-9]
    107 restr = "abc1234"
    108 res = re.findall("D",restr)
    109 #['a', 'b', 'c']匹配所有非数字字符
    110 
    111 #s 匹配空白字符,相当于[	
    fv]
    112 restr = "abc 1	2
    34"
    113 res = re.findall("s",restr)
    114 #[' ', '	', '
    ']匹配所有空格字符
    115 
    116 #S 匹配非空白字符,相当于[^	
    fv]
    117 restr = "abc 1	2
    34"
    118 res = re.findall("S",restr)
    119 #['a', 'b', 'c', '1', '2', '3', '4']匹配所有非空格字符
    120 
    121 #w 匹配字母和数字,相当于[a-Z0-9]
    122 restr = "aZc-1(2;3.4"
    123 res = re.findall("w",restr)
    124 #['a', 'Z', 'c', '1', '2', '3', '4']匹配所有字母和数字
    125 
    126 #W匹配非字母和非数字,相当于[^a-Z0-9]
    127 restr = "aZc-1(2;3.4
    "
    128 res = re.findall("W",restr)
    129 #['-', '(', ';', '.', '
    ']匹配所有字母和数字
    130 
    131 # 匹配一个特殊字符边界,相当于 空格,&,# 等
    132 restr = "aZc-1 2& 3#4"
    133 res = re.findall("\b3",restr)
    134 #['3']匹配3之前的边界
    135 
    136 #特殊知识点:\ 双反斜杠转义
    137 restr = "hello"
    138 res = re.findall("l\\o",restr)
    139 #['l\o'] 匹配lo成功,这里要说明的是四个是因为第一次是由python解释器翻译得到\
    140 #第二步是由正则解释,\为转义后的
  • 相关阅读:
    QT插件开发方式(作者有RemOjbects文档翻译(48)篇)
    qobject_cast<QPushButton*>(sender()) 简化信号与槽的编写(sender()取得发信号的对象后,就取得了它的全部信息,为所欲为)
    Qt:无标题栏无边框程序的拖动和改变大小
    Layui 是一款采用自身模块规范编写的国产前端UI框架(5600个Star)
    可靠、高吞吐架构基础改造
    MVC数据验证使用小结
    .NET面试问答集锦
    jQuery插件开发
    c#中运行时编译时 多态
    javascript变量的作用域
  • 原文地址:https://www.cnblogs.com/DragonFire/p/6789979.html
Copyright © 2020-2023  润新知