zoukankan      html  css  js  c++  java
  • 正则表达式学习小记

              这几天一直在努力的学习很多东西,因为是自学,走了很多弯路。特别是看到一些比较难得知识点时,心理总是很焦急,而且能够影响学习效率的东西太多了。一个安静的环境,自由的环境,舒缓的心情感觉真的很重要。就像今天下午的我,心理感觉总是乱糟糟的,一会想做这个一会想做那个,结果一个下午什么也没干成。蛋疼啊!

              大四了,找工作的鸭梨是真真切切的来了。突然感觉公司要求的技术自己一点都不懂,然后就华丽丽的急了。面试了两次,我就放下了。感觉这样的自己很难找到好的工作,还是赶紧静下心来学习吧!毕竟只要知道学习就不会太晚,给自己制定了一个方向:网站。因为专业已经学习了java,就找相关的资料啊 视频的学习起来:html-->css-->javascript-->jsp-->php-->jsp。大概就是这么一个路线吧!虽然这几天好多人都在我跟前说:这个技术前景不怎么好,让我学习ios啊什么的移动开发。可是我感觉既然自己有java的基础就要好好利用,毕竟技术在于:精。好吧,不扯了!进入主题!

              今天学习的是正则表达,因为在以前的学习和这段时间的javascript等学习发现正则表达式正的很重要、很方便、很实用。就想着好好学习学习,了解一番。找了个正则表达式30分钟入门教程就看了起来,现在看的基本有个眉目了。打算再看一遍,把该注意的地方和自己的测验写出来,做个记录。

              正则表达式

                 主要思想:一种描述字符串结构模式的形式化语言
                 1.结构模式:有结构的字符串,而不是字符流
                 2.形式化:用形式化的表达方法应付变化的情况
               字符组简记:
                     [d]                 [0-9]         匹配0-9之间的数字字符
                     [D]      [^0-9]       匹配除0-9数字字符之外的字符
          [w]      [0-9a-zA-Z]   匹配0-9和a-z和A-Z之间的字符
          [W]      [^0-9a-zA-Z]  匹配除0-9、a-z、A-Z之外的字符
          [s]               匹配空白字符(回车 制表 换行 空格)
          [S]               匹配非空白字符
                     [^x]              匹配除了x以外的任意字符
          [^aeiou]            匹配除了aeiou这几个字母以外的任意字符
         
               常用的限定符
             
    表1.常用的元字符
    代码说明
    . 匹配除换行符以外的任意字符
    w 匹配字母或数字或下划线或汉字
    s 匹配任意的空白符
    d 匹配数字
     匹配单词的开始或结束
    ^ 匹配字符串的开始
    $ 匹配字符串的结束

                            在上表中的、^、$   元字符^(和数字6在同一个键位上的符号)和$都匹配一个位置,这和有点类似。^匹配你要用来查找的字符串的开头,$匹配结尾。这两个代码在验证输入的内容时非常有用,比如一个网站如果要求你填写的QQ号必须为5位到12位数字时,可以使用:^d{5,12}$  

            ^  字符用来匹配 整个字符串 的开头
            $   字符用来匹配 整个字符串 的末尾
            A  用来匹配整个字符串的开头
              用来匹配整个字符串的末尾

                   这里需要说明的是:在大多数时候  上面的^和A、$和是可以互换使用的,但是要注意的是它们必须对应出现,即^和$、A和

    转义字符:

         如果你想查找元字符本身的话,比如你查找.,或者*,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用来取消这些字符的特殊意义。因    此,你应该使用.*。当然,要查找本身,你也得用\.

              例如:deerchao.net匹配deerchao.netC:\Windows匹配C:Windows

    特殊字符简记法:点号
            .  它可以匹配几乎所有字符   (除了换行符 )
            点号本身用  .  匹配
            字符内部  [.]也只能匹配点号
     
    量词:限定之前出现的次数
                   *  表示之前出现的字符可以出现0次到无穷多次
                   ? 表示之前出现的字符 至多只能出现一次
                    + 表示之前出现的字符 至少要出现一次
     
    区间量词:规定字符出现次数
      {min,max}   设定上限max   设定下限min
      {min,}          设定下限min
      {number}    设定一个具体的出现次数(连续重复匹配number次)
      *  = {0,}
      + ={1,}
      ? ={0,1}
    量词的局限性:只能规定之前字符或字符组出现的次数
                规定字符串出现的次数就必须使用(....) 然后加上量词
                     (as)+     匹配asasas
    多选结构:表示某个位置可能出现的字符串
                    形式:(...|...)    (...|...|...)   
            
    括号的作用:捕获分组
    将括号中的字表达式捕获的字符串存到匹配结果中,供匹配完成后访问
    形式:(...)
    注意事项:
    1.使用括号 就存在捕获分组
    2.捕获分组按照开括号从左至右的顺序进行编号,潜逃也是一样
    3.如果捕获分组后面存在量词,则匹配结果中,则捕获分组保存的是字表达式最后一次匹配的字符串
     
    不捕获分组
    形式:(? : ...)
     
    反相引用:1
     
    锚点:规定匹配的位置
    形式:
     边界条件         单词分界符锚点:    (只对英文字符 数字字符有用  不支持中文字符) 
    单词分界符的一侧是单词字符 ()另一侧是非单词字符
     
    ^  字符用来匹配 整个字符串 的开头
    $   字符用来匹配 整个字符串 的末尾
    A  用来匹配整个字符串的开头
      用来匹配整个字符串的末尾
     
     字符类:

    要想查找数字,字母或数字,空白是很简单的,因为已经有了对应这些字符集合的元字符,但是如果你想匹配没有预定义元字符的字符集合(比如元音字母a,e,i,o,u),应该怎么办?

    很简单,你只需要在方括号里列出它们就行了,像[aeiou]就匹配任何一个英文元音字母[.?!]匹配标点符号(.或?或!)

       ***    这里我们要重点理解一下[.?!]这个例子:上面我们已经记录了 .  对!就是这个点号,我们说当点号在字符串中[.]和转义.时只能匹配点号本身,

                 所以这里的[.?!]匹配的就是(.或?或!)

    现在我们来看看一个例子:(?0d{2}[) -]?d{8}

              首先是一个转义字符来转义(  后面的?表示出现的次数0或1次,然后是匹配数字0,然后匹配一个数字(d)重复两次{2},然后就是一个字符类[) -]后面的?同样表示[]中的三个字符出现0或1次,让后就是数字字符重复出现8次  像(010)88886666,或022-22334455,或02912345678

    环视
    由于锚点对位置的判断不够灵活,所以引进环视
    应用子表达式对位置进行判断
    形式:
             (?=...) 
             (?!...)
             (?<=...)   
             (?<!...)

         

    匹配模式:用来改变某些结构的匹配模式
                  形式:
                            I:   不区分大小写(不对英文单词区分大小写)
                           S:    点号通配(在此模式下 .  号也能匹配换行符)
                            M:   多行模式(更改^和$符的)
                            X:     注释模式

          

    A dwarf on a giant's shoulder sees the farther of the two. 站在巨人肩上的矮子看得比巨人远。 --A dwarf on a giant's shoulders
  • 相关阅读:
    【模板】线段树
    【模板】快速幂
    【模板】SPFA
    【模板】链式前向星
    C语言博客作业--函数嵌套调用
    C语言博客作业--结构体
    C博客作业--指针
    C语言博客作业--字符数组
    C语言博客作业--一二维数组
    C语言博客作业--函数
  • 原文地址:https://www.cnblogs.com/wxb0328/p/3375026.html
Copyright © 2011-2022 走看看