zoukankan      html  css  js  c++  java
  • 正则表达式攻关(易混淆点)

    记不清有多少次遇到需要写正则的时候,虽然零零碎碎的学了点,但还是不知道写,只能网上搜,有时搜索回来的

    能用,有时用不了,自己又不会调。很想花点时间系统的学习一下正则,正则不比其他编程语言,好几次看博文学,看不下去。

    搁置了很久,这次决定腾出时间好好学一下正则。

    认识几个概念:元字符,字符组,多选结构,反向引用,转义,复用,行的起始和结束

     太基础的东西就不讲了,如果要从小白讲起,那必须出一本书,我就讲一些个人认为很容混淆的东西,

       字 符组 []  (只对一个字符起作用),意思是不管里面写了多长的字符,只要含有里面的任意一个字符就算匹配成功,如 /[abcdef]/,

    只要字符串里面包含括号里面的任意一个字符,就算匹配成功。

      排除型字符 [^abc]  脱字符 ^位于字符组首位,如果不是首位就只能当做普通字符 ^来匹配了  

     元字符 -  一般位于字符组内部表示字符范围,如[a-c1-3]等价于[abc123],注意如果位于字符组两端那它就是个普通字符 -  

     元字符如果位于字符组内部,则需要先判断此时它究竟是元字符还是普通字符

     计数元字符(? + *) 仅作用于它前面的一个单元(可以是一个字符,也可以是一个子表达式,或者是一个字符组)

     脱字符^ 匹配行首,$匹配行尾 ,这两个一般用于完全匹配或半完全匹配时使用,如

     

     仔细观察三个例子就很容易发现 ^ 及 $的作用了,用了 ^,表示字符串的开头必须匹配后面的表达式,用了$表示结尾必须匹配

    如果需要匹配元字符本身,加上转义字符 反斜杠 就好了,如:匹配?

     可选 |  理解成  "或",作用对象同样是一个单元,如果没有范围限制,就是左边或者右边,如:

    理解成   abc[a-z]  或者  [0-9][0-9],又如这个

     理解成 ---abc[a-z]  或者 ---[0-9][0-9],这里因为有()作为范围限制,所以 |的作用范围受到限制

     当范围遇上反向引用 () + 1 这种 ,如,先看几种例子


     

     看完可以明白了 1  2 不是重复一次前面的范围表达式,而是收集了前面的匹配结果来匹配,

    (d)(w)可以匹配一个数字接着一个字母  匹配可以得到 3s,然后后面  1 2 表示 匹配 3s,

    这种很容易用来作为匹配某个连续重复出现的单次等等需求

    正则的书写分为两个要求:1,匹配需要的字符,2.屏蔽不需要的结果,书写正则之前能够先查看需要匹配的

    对象以便找到需要屏蔽的情况

  • 相关阅读:
    ASP.NET连接数据库配置文件
    ASP.NET应用程序的文件类型及文件夹列表
    c#配置文件的简单操作
    js加载XML文件
    c#生成动态库并加载
    class和id的区别
    Div和Span的区别
    C#类和对象
    C#表达式和语句
    函数声明提升和变量提升
  • 原文地址:https://www.cnblogs.com/shellphen/p/11759449.html
Copyright © 2011-2022 走看看