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

    正则表达式在线测试的网址:http://tool.chinaz.com/regex

    正则表达式

    作用:

      1.检测某段字符串是否符合规则

      2.从大段文字中将符合规则的内容匹配出来

    ASCII码表:

    注:大写字母和小写字母要分开写[A-Za-z],不可以[A-z],因为91-96并非字母

    字符组:

      字符组的范围是根据ASCII码表来规定的。

    字符组的写法:

    [A-Z]  :  大写字母A至大写字母Z
    
    [a-z]  :  小写字母a至小写字母z
    
    [2-9]  :  数字2至9
    
    [a-z0-9]  : 字母a-z数字0-9的都符合
    
    [^A-Z] :  匹配非A-Z的字符

    注意:

      1.不能从大到小,例[9-0]
    
      2.匹配英文字母要[A-Za-z],不能A-z,因为Z到a有6个其他的符号
    
      3.字符组只代表一个字符,例[A-Z0-9a-z]也只能代表一个字符

    元字符:

    .   : 表示任意字符,除了换行符

    d  :  [0-9]

    w  :  [A-Z0-9a-z_]  # 字母数字下划线

      :  匹配回车换行

       :  匹配制表符 Tab

    空格  :  匹配所有空格(空白)

    s  :   匹配空格、换行符和制表符(Tab)

      :   匹配一个单词的边界

    的例子:
    
    abc    # 正则表达式
    
    kjgcabc abcabcbb    #只会匹配到第一个空格前的abc,在一堆字符中间的不会被匹配到

    反义词:

    D   :  [^0-9]   # 除了数字之外的所有字符

    W  :  [^A-Z0-9a-z_]  # 除了字母数字下划线之外的所有字符

    S   :  [^ ]   # 除了空格(空白)、换行符和制表符(Tab)之外的所有字符

    匹配所有  :   [Dd]或者[Ww]或者[Ss]      # [Dd] 匹配非数字和数字

    非字符组 :  [^123]  匹配非1和2和3之外的所有字符

    开始符和结束符:

    ^  :  永远都是写在一个规则的最开始的位置

    $  :  永远都是写在一个规则的末尾的位置

    注: ^和$也规定了匹配内容的字符串的长度

    例子:

    判断手机号的:
    
    ^[1][3-8]d{9}$     # 1开头,第二位是3-8的任意数字,第三位至第十一位任意数字组合,最后以为是以数字结尾

    |  : 或 , 要注意的是 永远要把长的规则放到左侧

    ()  :  分组

       :  转义,如果是有意义的字符对其进行转义让它成为普通字符,如.(表示任意字符)  . ( 只代表一个点 ),如\n 表示' '

    例:
    
    www.(baidu|zezhou).com     #  匹配www.baidu.com或www.zezhou.com,如果不加()分组,是www.baidu或zezhou.com

    量词:     #  在量词的范围内尽可能多的匹配

    {n}  :  匹配n次  

    {n,}   :  匹配至少n次或更多

    {n,m}  :  匹配n-m次

    ?  :  匹配0次或1次

    +  :  匹配1次或多次

    *  :   匹配0次或多次 

    例子:

    1.匹配整数
    
    解释:个位或更多位,都不符合匹配是否为0,*这个需要注意,可以有可以没有
    ^([1-9]d*|0)$ 2.匹配小数 ^(d+.d+)$ 3.匹配整数及小数 ^(d+(.d+)?)$ 4.匹配身份证号 ^([1-9]d{14}(d{2}[dxX])?)$

    贪婪匹配:尽可能多的匹配

    惰性匹配:尽可能少的匹配

    例子:

    字符串:'asdfdsfsdxxxxxxbbbb'
    a.*x     # asdfdsfsdxxxxxxbbbb      #  贪婪匹配,回溯算法, .* 直接匹配到字符串结尾,遇到x回到最后一个x位置
    a.*?x    #  asdfdsfsdx              #  惰性匹配 , 挨个匹配是否下个字符是x,遇到x结束

    python得re模块使用:

    https://www.cnblogs.com/zezhou/articles/10578732.html

  • 相关阅读:
    北京积分落户
    HDU-1054-Strategic Game
    POJ-3020-Antena Placement(最小路径覆盖)
    HDU-4185-Oil Skimming(最大匹配)
    HDU-2389-Rain on your Parade (最大匹配,kopcroft-karp)
    HDU-1083-Courses(最大匹配)
    HDU-1045-Fire Net(最大匹配)
    HDU-2444-The Accomodation of Students(二分图判定,最大匹配)
    Codeforces Round #569 (Div. 2) C. Valeriy and Deque
    Codeforces Round #569 (Div. 2) B. Nick and Array
  • 原文地址:https://www.cnblogs.com/zezhou/p/10572546.html
Copyright © 2011-2022 走看看