• Python3 正则表达式


      1 '''
      2 正则表达式,又称规则表达式,在代码中常简写为regex、regexp或RE,是计算机科学的一个概念。
      3 正则表通常被用来检索、替换那些符合某个模式(规则)的文本。
      4 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,
      5 就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
      6 正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。
      7 '''
      8 
      9 '''
     10 首先要清楚,字符串提供的方法是完全匹配
     11 正则表达式则会给我们提供模糊匹配,通过re模块调用
     12 '''
     13 # a = 'Hobbyer is a student!'
     14 # print(a.find('bby'))        # 查找
     15 # chg = a.replace('is','are')     # 替换元素
     16 # print(chg)
     17 # print(a.split('u'))     # 分割
     18 '''
     19 博客园 Infi_chu
     20 '''
     21 
     22 import re       # 调用re模块
     23 # print(re.findall('b{2}l','Hobbyer is a student!'))      # findall(规则,字符串,修改匹配规则),完全比配
     24 
     25 '''
     26 正则元字符(11个):
     27 .   ^   $   *   +   ?   {}   []   |   ()   
     28 '''
     29 # #  . 是通配符
     30 # a1 = 'hello world'
     31 # print(re.findall('w..l',a1))    # . 只能匹配任意一位,任意一个字符,多了就会不识别
     32 # print(re.findall('w..l','w
    orld'))     # . 不能匹配换行符,除了换行符都可以匹配一位
     33 # print(re.split('[a,c]','ddabcffadacd'))     # 有顺序的分割,中间同时出现ac所以会出现空
     34 # print(re.sub('e.l','wc',a1))        # 替换
     35 #
     36 # a3 = re.compile('.com')    # 多次用的方法,提高效率
     37 # a3_out = a3.findall('www.example.com.cn')
     38 # print(a3_out)
     39 '''
     40 博客园 Infi_chu
     41 '''
     42 # #  ^
     43 # print(re.findall('w...d',a1))
     44 # print(re.findall('^w...d',a1))      # 从最开始匹配,如果有则出现,没有则匹配不到
     45 #
     46 # #  $
     47 # print(re.findall('h...o$',a1))      # 只在结尾匹配
     48 #
     49 # #  * 重复前面字符,大于等于零次
     50 # print(re.findall('b.*u','http://www.baidu.com'))    # 重复匹配,好几个点可用一个*表示
     51 # print(re.findall('.*',a))       # 输出结果后方的'',是另外的情况(空情况,匹配0)
     52 '''
     53 博客园 Infi_chu
     54 '''
     55 # #  + 重复匹配,大于等于1次
     56 # print(re.findall('.+',a))       # 输出结果必须有,则不会出现空的情况
     57 #
     58 # #  ?  匹配范围零次或1次
     59 # print(re.findall('w?r','wwrr'))     # 可以匹配0-1个字符
     60 #
     61 # #  {} 匹配任意次数
     62 # print(re.findall('w{5}r','wwwrrwwwwwrr'))       # 匹配5个w和1个r
     63 # print(re.findall('w{1,5}r','wwwrrwwwwwrrwr'))    # 匹配1-5次
     64 '''
     65 博客园 Infi_chu
     66 '''
     67 # #  []  是字符集
     68 # print(re.findall('w[c,e]r','wer'))      # []中可以添加任意字符或字符串,多选1
     69 # print(re.findall('w[a-z]','wff'))       # 范围a-z
     70 # print(re.findall('[a,*]','ww'))          # * 不在是之前的功能,在[]之中只是普通的*号,但是( ^ -)例外
     71 # print(re.findall('[a-z,0-9,A-Z]','afsasdSFA54asS'))
     72 # print(re.findall('[^c]','acs'))         # ^ 在[]是取反的意思
     73 # print(re.findall('[^a,b]','abcdefg'))  # 非a非b
     74 '''
     75 博客园 Infi_chu
     76 '''
     77 # 
     78 '''
     79 反斜杠后边跟元字符,使其去除特殊功能,
     80 反斜杠后边跟普通字符,使其具有特殊功能
     81 d  匹配十进制数
     82 D  匹配任何非数字字符
     83 s  匹配任何空白字符
     84 S  匹配任何非空白字符
     85 w  匹配任何字母字符
     86 W  匹配任何非字母字符
     87   匹配一个单词和空格间的位置
     88 '''
     89 # print(re.findall('d{2}','asdw5d31asdw1a3d5s48w4d3a1w')) # 匹配两位数字
     90 # print(re.findall('swww','fg www')) # 匹配空白字符
     91 # print(re.findall(r's','s is a s$udent'))  # 匹配了特殊字符
     92 # print(re.findall(r's','s is a student'))
     93 # c1 = re.search('wc','wsdwcasdwcaff')      # search 只匹配找到的第一个
     94 # print(c1)
     95 # print(c1.group())       # 直接输出匹配内容,但是search没有匹配成功,调用group会报错
     96 # print(re.findall('\\c','afekK:c'))      # 这里注意Python解释器中的转义,交给re模块之后又有转义,所以需要4个
     97 # print(re.search(r'basd','basd'))         # r表示原生字符串,不需要转义
     98 '''
     99 博客园 Infi_chu
    100 '''
    101 # #  ()  分组
    102 # print(re.search('(wc)+','fswfefwcdwc'))     # 分组
    103 # print(re.search('(wc)+','fswfefwcwc'))
    104 '''
    105 博客园 Infi_chu
    106 '''
    107 # # |  或
    108 # print(re.search('(wc)|ff','ffwca'))     # 或
    109 
    110 '''
    111 较高级的用法
    112 '''
    113 # print(re.search('(?P<id>d{3})/(?P<name>w{3})','weeew34ttt123/ooo'))       # ?P<>起名的格式,名字放在<>中,后面为匹配规则
    114 # print(re.search('(?P<id>d{3})/(?P<name>w{3})','weeew34ttt123/ooo').group())
    115 # print(re.search('(?P<id>d{3})/(?P<name>w{3})','weeew34ttt123/ooo').group('id'))
    116 # print(re.search('(?P<id>d{3})/(?P<name>w{3})','weeew34ttt123/ooo').group('name'))
    117 
    118 '''
    119 方法总结
    120 正则表达式的方法:
    121 findall():返回所有的结果,返回到1个列表当中
    122 search():返回一个对象(object),返回匹配到的第一个对象,对象可以调用group()方法返回匹配内容
    123 match():只在字符串开始的时候匹配,返回第一个匹配到的对象
    124 split():分割点
    125 sub():替换
    126 compile():可以用来规定规则
    127 '''
    128 
    129 
    130 '''
    131 博客园 Infi_chu
    132 '''
  • 相关阅读:
    ios web 媒体查询兼容
    Linux python 虚拟环境管理
    three.js 纹理动画实现
    three.js 在模型上移动相机
    three.js 模型拖动之DragControls控制器
    three.js 添加html内容、文本
    微信公众号对接记录
    事务的日志
    事务的隔离级别
    事务中的锁
  • 原文地址:https://www.cnblogs.com/Infi-chu/p/7717729.html
Copyright © 2020-2023  润新知