正则表达式学习笔记

作者: 酸甜小黄瓜 | 来源:发表于2017-08-18 11:52 被阅读29次

    基本

    正则表达式是使用你定义的“规则”扫描目标字符串,寻找目标字符串中与“规则”相匹配的字符串。
    在线练习正则表达式

    规则: ab
    目标字符串: abcde
    结果:ab
    

    在 abcde 中查找,是否有 ab 这个字符串。

    注:正则表达式大小写敏感的

    元字符

    元字符不代表他们本身的字面意思, 他们都有特殊的含义. 一些元字符写在方括号中的时候有一些特殊的意思

    元字符 描述
    . 句号匹配任意单个字符除了换行符
    [ ] 字符种类. 匹配方括号内的任意字符
    [^ ] 否定的字符种类. 匹配除了方括号里的任意字符
    * 匹配 >=0 个重复字符串
    + 匹配 >=1 个重复字符串
    ? 标记?之前的字符为可选
    {n,m} 匹配num个中括号之前的字符 (n <= num <= m)
    (xyz) 字符集, 匹配与 xyz 完全相等的字符串
    | 或运算符,匹配符号前或后的字符
    \ 转义字符,用于匹配一些保留的字符 [ ] ( ) { } . * + ? ^ $ \
    ^ 从开始行开始匹配
    $ 从末端开始匹配

    点运算符 "."

    栗子:匹配一个任意字符后面跟着是b和c的字符串.

    规则: .bc
    目标字符串: abcde
    结果:abc
    

    字符集 [ ]

    字符集也叫做字符类. 方括号用来指定一个字符集. 在方括号中使用连字符来指定字符集的范围. 在方括号中的字符集不关心顺序

    1. 栗子:匹配包含 b 或者 c 的字符串
    栗子1:
    规则: [bc]
    目标字符串: 456abc123de
    结果: b 、  c
    注:得到的结果 b 和 c 是两个结果
    
    栗子2:
    规则: [0-9]
    目标字符串: abc123de
    结果: 1、  2 、  3
    注: 1 2 3 分别是三个结果
    
    1. 否定字符集
      一般来说 ^ 表示一个字符串的开头, 但它用在一个方括号的开头的时候, 它表示这个字符集是否定的.

    栗子:匹配一个后面跟着de的除了c的任意字符.

    规则: [^a]de
    目标字符串: abcdeade
    结果: cde
    

    重复次数

    *号, >=0 次

    规则: [a-z]*bc
    目标字符串: Abc abc
    结果: bc 、 abc
    

    *号匹配 在*之前的字符出现大于等于0次。表达式[a-z]* 匹配一个行中所有以小写字母开头的字符串

    +号, >=1 次

    规则: [a-z]*bc
    目标字符串: Abc abc
    结果:  abc
    

    ?号, 出现 0 或 1 次

    规则: [a-z]*bc
    目标字符串: Abc abc
    结果: bc 、 abc
    

    { } 号

    在正则表达式中 {} 是一个量词, 常用来一个或一组字符可以重复出现的次数. 例如, 表达式 [0-9]{2,3} 匹配 2~3 位 0~9 的数字.

    栗子1:3~4位
    规则: [0-9]{3,4}
    目标字符串:12345adbc666
    结果:  1234、666
    
    栗子2:2~3位
    规则: [0-9]{2,3}
    目标字符串:12345adbc666
    结果:  123、45、666
    
    栗子3:至少出现4位
    规则: [0-9]{4,}
    目标字符串:12345adbc666
    结果:  12345
    
    栗子3:只出现3位
    规则: [0-9]{3,}
    目标字符串:12345adbc666
    结果:  123、666
    
    

    (...) 特征标志群

    特征标群是一组写在 (...) 中的子模式. 例如之前说的 {} 是用来表示前面一个字符出现指定次数. </br> 但如果在 {} 前加入特征标群则表示整个标群内的字符重复 N 次. 例如, 表达式 (ab)* 匹配连续出现 0 或更多个 ab.

    栗子: 出现 0 次 或者更多个 连续的3个6
    规则: (666)*
    目标字符串:666abc12dd6666
    结果:  666
    

    | 或运算

    栗子: 匹配后面跟着 b 的 A 或者 a 开头的字符串
    规则: (A|a)b
    目标字符串:abc78Abcdb7
    结果:  ab、Ab
    

    转码特殊字符

    栗子: 匹配 ?b 
    规则: \?b
    目标字符串:bc78A?bcdb7
    结果:  ?b
    

    锚点

    ^ 指定开头, $ 指定结尾。

    栗子: 必须是 a 开头
    规则: ^(A)b
    目标字符串: Abc66 abc
    结果:  Ab
    
    栗子: 必须是 bc. 结尾
    规则: (bc\.)$
    目标字符串: Abc66 abc.
    结果:  bc.
    
    

    正则表达式图片总结

    正则表达式

    相关文章

      网友评论

        本文标题:正则表达式学习笔记

        本文链接:https://www.haomeiwen.com/subject/sytarxtx.html