• 全网最易懂的正则表达式教程(4)- 范围


    正则详细教程系列可以看此链接的文章哦

    https://www.cnblogs.com/poloyy/category/1796055.html

    范围

    代码/语法说明
    分支条件,或
    [...] 字符集合,多选一
    [a-z] 指定范围的字符集合
    [^...] 取反的字符集合

      

    [...] 字符集合介绍

    背景

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

    解决方案 

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

    重点

     [...]  里面写再多的字符集合,最终也只会匹配一个字符,和元字符一样,如果需要重复匹配需要加上限定符

    元字符等价的字符集合

    元字符等价语法
    w [a-zA-Z0-9_] 
    W [^a-zA-Z0-9_] 
    s [ f] 
    S [^ f] 
    d [0-9]
    D [^0-9]

      

    [...] 的栗子一

    正则表达式

     (?0d{2}[) -]?d{8} 

    分析:

    1. 首先是一个转义字符  (  ,它能出现 0 次或 1 次  ? 
    2. 然后是一个 0,后面跟着2个数字 d{2}
    3. 然后是 ) 或 - 或空格中的一个,它出现 0 次或 1 次  ? 
    4. 最后是 8 个数字 d{8}

    可匹配到的字符串

    • (010)88886666
    • 022-22334455
    • 02912345678

    [...] 的栗子二

    正则表达式

    [123aA;] 

    可匹配到的字符串

    只能匹配 [ ] 里面的字符

    指定范围的 [...] 的栗子一

    正则表达式

     [u4e00-u9fa5]

    可匹配到的字符串

    任意中文字符

    指定范围的 [...] 的栗子二

    正则表达式

     ^d[a-gA-Z5-9]{2,4} 

    分析:

    1. 数字开头
    2. a-g 或 A-Z 或 5-9 任取2-4位
    3. 表达式可以等价成: ^[0-9][a-gA-Z5-9]{2,4} 

    可匹配到的字符串

    • 6aY
    • 6aY7
    • 6aY78
    • 1aY781

    [^...] 的栗子

    正则表达式

     [^abcdA-Z()-=]

    分析:

    可以匹配非 a、b、c、d、A-Z、( 、) 、- 、= 以外的字符

    可匹配到的字符串

    • e
    • f
    • [

    指定范围的 [...] 总结

    •  [a-z] 如果是有指定范围字符集的话,必须按照 ASCII 码的顺序
    •  [...] 只能匹配一个字符,除非加了量词(限定符)

    | 分支条件的栗子一

    正则表达式

     ab|cd|123|.{2} 

    可匹配到的字符串

    • ab
    • cd
    • 123
    • 菠萝

    | 分支条件的栗子二

    正则表达式

     0d{2}-d{8}|0d{3}-d{7} 

    可匹配到的字符串

    • 012-81200111
    • 0333-8120011

    | 分支条件的栗子三

    两个正则表达式的区别

     d{5}-d{4}|d{5} :可以匹配 5 位数字 或 5位数字 - 4位数字

     d{5}|d{5}-d{4} :只能匹配 5 位数字

    是否有个疑问

    明明表达式差不多一样啊,只是前后位置换了下而已,为啥第二种写法只能匹配 5 位数字呢?

    答案

    • 因为第二种写法,如果满足 d{5}-d{4} ,那肯定也满足 d{5} 
    • 匹配分支条件时,将会从左到右地测试每个条件,如果满足了某个分支条件的话,就不会再去匹配后面的分支了
    • 所以d{5}能匹配上,就不再去测试 d{5}-d{4} 是否匹配了
  • 相关阅读:
    WPF之感触
    C# WinForm 给DataTable中指定位置添加列
    MyEclipse 8.6 download 官方下载地址
    将博客搬至CSDN
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
  • 原文地址:https://www.cnblogs.com/poloyy/p/13212189.html
Copyright © 2020-2023  润新知