zoukankan      html  css  js  c++  java
  • 24_正则表达式

    一、定义
        
        正则表达式是对字符串操作的一种逻辑公式,一般使用正则表达式对字符串进行匹配和过滤。
        优点:灵活、功能性强,逻辑性强。
         http://tool.chinaz.com/regex/     #在线测试工具
        正则表达式由普通字符和元字符组成。普通字符——大小写字母、数字。
     
    二、元字符
     
        1、字符组
     
            字符组用 [ ]括起来,[ ]内容会被匹配。例如[abc]  匹配 a 或 b 或 c 。字符组中的内容过多可以 [a-z] :a~z之间的所有字母 [0-9]; [a-zA-Z0-9]匹配大小写字母数字。
     
        2、简单元字符
    元字符 匹配内容
    . 匹配除换行以外的任意字符
    w 匹配字母或数字或下划线
    s 匹配任意空白符
    d 匹配数字
    匹配一个换行符
    匹配一个制表符
     匹配一个单词的结尾
    ^ 匹配字符串的开始
    $ 匹配字符串的结尾
    W 匹配非字母数字下划线
    D 匹配非数字
    S 匹配非空白符
    a | b 匹配字符a或字符b
    ( ) 匹配括号内的表达式,也表示一个组
    [...] 匹配字符组中的字符
    [^...] 匹配除了字符组中的字符的所有字符
        3、量词 —— 一次匹配很多个字符
     
     
    量词 解释
    * 重复0次货更多次
    + 重复1 次或更多次
    ? 重复0次或1次
    {n} 重复n次
    {n, } 重复n次或更多次
    {n, m} 重复n到m次
        4、贪婪匹配和惰性匹配
     
            在量词中的 * ,+ ,{} 都属于贪婪匹配。就是尽可能多的匹配结果
      1 str: 麻花藤昨天让英雄联盟关服了 2 reg: 麻花藤.* 3 此时匹配的是整句话 
         
       .* 后面如果加了? 则是尽可能的少匹配,表示惰性匹配
     1 str: 麻花藤昨天让英雄联盟关服了
     2 reg: 麻花藤.*?
     3 此时匹配的是 麻花藤
     4 str: <div>胡辣汤</div>
     5 reg: <.*>
     6 结果: <div>胡辣汤</div>
     7 str: <div>胡辣汤</div>
     8 reg: <.*?>
     9 结果:
    10 <div>
    11 </div>
    12 str: <div>胡辣汤</div>
    13 reg: <(div|/div*)?>
    14 结果:
    15 <div>
    16 </div>
         .*?x的特殊含义 找到下⼀个x为⽌
     1 str: abcdefgxhijklmn 2 reg: .*?x 3 结果:abcdefgx 
     
        5、分组 ——  正则中使⽤( )进⾏分组
     
        匹配 老式新式身份证号
     1 ^[1-9]d{14}(d{2}[0-9x])?$  2 ^([1-9]d{16}[0-9x]|[1-9]d{14})$ 
     
      6、转义
     
    在正则表达式中, 有很多有特殊意义的是元字符, 如 和s等,如果要在正则中匹配正常的" "而不是"换行符"就需要对""进行转义, 变成'\'.在python中, 无论是正则表达式, 还是待匹配的内容, 都是以字符串的形式出现的, 在字符串中也有特殊的含义, 本身还需要转义. 所以如果匹配一次" ", 字符串中要写成'\n', 那么正则里就要写成"\\n",这样就太麻烦了.这个时候我们就?到了r' '这个概念, 此时的正则是r'\n'就可以了.
  • 相关阅读:
    PAT (Advanced Level) 1080. Graduate Admission (30)
    PAT (Advanced Level) 1079. Total Sales of Supply Chain (25)
    PAT (Advanced Level) 1078. Hashing (25)
    PAT (Advanced Level) 1077. Kuchiguse (20)
    PAT (Advanced Level) 1076. Forwards on Weibo (30)
    PAT (Advanced Level) 1075. PAT Judge (25)
    PAT (Advanced Level) 1074. Reversing Linked List (25)
    PAT (Advanced Level) 1073. Scientific Notation (20)
    PAT (Advanced Level) 1072. Gas Station (30)
    PAT (Advanced Level) 1071. Speech Patterns (25)
  • 原文地址:https://www.cnblogs.com/hq82/p/9792158.html
Copyright © 2011-2022 走看看