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'就可以了.
  • 相关阅读:
    进程与线程
    HDOJ搜索专题之Catch That Cow
    HDOJ搜索专题之Red and Black
    COJ1026(过河卒)
    HDOJ搜索专题之Prime Ring Problem
    COJ1113(Emperor And His Knight)
    HDOJ搜索专题之胜利大逃亡
    HDOJ搜索专题之翻纸牌游戏
    HDOJ搜索专题之Counting Sheep
    HDOJ搜索专题之Robot Motion
  • 原文地址:https://www.cnblogs.com/hq82/p/9792158.html
Copyright © 2011-2022 走看看