zoukankan      html  css  js  c++  java
  • 正则表达式基础知识

    正则表达式

    什么是正则表达式: 通俗来说,就是定义了一种匹配字符串的规则. 然后就可以根据这个规则,在待匹配的字符集中找到满足这个匹配规则的一部分(或几部分).

    常用元字符

    代码/语法说明
    . 匹配除了换行符以外的任意单个字符
    d 匹配数字
    w 匹配字母,数字,下划线
    s 匹配任意空白字符( , , ,空格)
     匹配单词的边界(单词的开始或结束)
    匹配一个换行符
    匹配一个制表符
    a|b 匹配字符a或者b
    ^ 匹配字符串的开始
    $ 匹配字符串的结束

    反义

    代码/语法说明
    D 匹配任意非数字的字符
    W 匹配任意不是字母,数字,下划线的字符
    S 匹配任意非空白字符
    B 匹配非单词边界

    字符转义

    如果想匹配元字符本身(., w等), 这时就需要在元字符前使用(反斜杠)来取消字符的特殊含义. 例如,使用., *, 来匹配.,*,本身.

    匹配次数

    代码/语法说明
    ? 重复零次或一次
    + 重复零次或任意多次
    * 重复零次或任意多次
    {m} 重复m次
    {m,} 重复m次或更多次
    {m, n} 重复m到n次

    字符组

    代码/语法说明
    [xyz] 匹配字符集中的任意一个字符(字符集中字符可以是任意类型)
    [^xyz] 匹配字符集中的任意一个字符
    [a-z] 可以指定范围, [a-z]表示匹配任意一个小写的英文字母
    [^a-z] 匹配任意一个非小写英文字母的字符
    [0-9] 匹配任意一个数字,等同于d
    [^0-9] 匹配任意非数字
    [0-9a-zA-Z_] 等同于w

    分组

    重复单个字符,直接在字符后面加上限定符就可以; 但如果想要重复多个字符,该如何处理? 可以使用小括号来指定子表达式(也叫做分组),然后就可以指定这个子表达式的重复次数.

    贪婪匹配与懒惰匹配

    当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。

    有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:

    a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。

    代码/语法 
    ?? 重复零次或一次,但尽可能少的重复
    +? 重复一次或更多次,但尽可能少的重复
    *? 重复任意次,但尽可能少的重复
    {m, n}? 重复m到n次,但尽可能少的重复
    {m,}? 重复m次以上,但尽可能少的重复

    参考网址: https://www.jb51.net/tools/zhengze.html

  • 相关阅读:
    Spring——Spring整合Mybatis及事务
    Spring——配置,依赖注入,Bean的自动装配
    Mybatis—多对一和一对多
    Mybatis—动态SQL
    Elasticserch学习之查询字符串
    Elasticserch学习之分页
    Elasticserch学习之多索引和多类别
    Elasticserch学习之搜索(二)
    Elasticserch学习之数据
    Elasticserch学习之添加索引
  • 原文地址:https://www.cnblogs.com/gandoufu/p/9457379.html
Copyright © 2011-2022 走看看