zoukankan      html  css  js  c++  java
  • 正则表达式

    正则表达式:

      官方定义: 正则表达式是对字符串操作的一种逻辑公式, 就是事先定义好的一些有特定字符, 以及这些特定字符的组合, 组成一个规则字符串,次字符串用来对字符串进行过滤.

      正则表达式只能和字符串相关.

      字符组:  [ 字符组 ]

        在同一个位置上可能出现的各种字符组成一个字符组,用 [ ] 表示, 字符可以有很多种 : 数字, 字母, 标点符号等

    元字符 匹配内容
    .   匹配除换行符以外的其他任意字符
    w 匹配数字字母下划线
    s 匹配任意空白符
    d 匹配数字
    匹配换行符
    匹配制表符
     匹配一个单词的结尾
    ^ 匹配字符串的开始
    $ 匹配字符串的结束
    W 匹配非数字字母下划线
    S 匹配非空白符
    D 匹配非数字
    a|b 匹配a或匹配b
    () 匹配括号内的表达式,表示一个组
    [ ] 匹配字符组内的字符
    [^ ] 匹配除了字符组内的所有字符

      量词 :

    量词 用法说明
    * 至少重复0次或者重复n次
    + 至少重复1次或者重复n次
    ? 重复0次或者1次
    { n } 重复n次
    { n, } 重复n次或者更多次
    { n, m } 重复n到m次

      贪婪匹配 : 

        在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配

    正则 带匹配字符 匹配结果 说明
    <.*> <script>....<script> <script>....<script>

    默认为贪婪匹配,

    会匹配符合匹配规则中最长的字符串

    <.*?> <script>....<script>

    <script>

    <script>

    表达式后加上?意思

    将贪婪匹配转换为非贪婪匹配,

    会在符合匹配规则的情况下

    尽量匹配最短的字符串

      非贪婪匹配 :

    *? 重复任意次,但会尽可能的少重复
    +? 重复一次或者更多次,但会尽可能的少重复
    ?? 重复0次或者1次,但会尽可能的少重复
    { n, m }? 重复n到m次,但会尽可能的少重复
    { n, }? 重负n次后者更多次,但会尽可能的少重复

      .*?的用法 :

        . 是去任意字符

        * 是取0到无穷

        ? 表示非贪婪模式

        大多情况用在 : .*?x  #意思就是去前面任意的任意字符,直到一个x出现.

      转义符

        正则表达式中,有很多有特殊意义的元字符,比如 : d , s等, 如果要在正则中匹配正常的 ' d '而不是数字,就需要对 ' ' 进行转义,变成 ' \ '.

    正则 待匹配结果 匹配结果 说明
    d d False 因为在正则表达式中 ' '是具有特殊意义的字符,要匹配 ' d '本身,表达式 d 无效
    \d d True 转移 后变成 \ ,可以匹配
    \\d \d True python中,字符串中的 也需要转义
    r'\d' r'd' True 在字符串前加 r, 让整个字符串不转义
  • 相关阅读:
    KVM之一:安装准备(基于CentOS6.7)
    Nginx技巧——Nginx/Apache下禁止指定目录运行PHP脚本(转自运维之美)
    (转)关于 awk 的 pattern(模式)
    form验证里使用request 和前端倒计时
    restful 在接口中获取 传过来的值
    django使用celery
    celery
    restful 在接口中获取 request.user
    码云创建一个仓库
    django中local_settings的配置
  • 原文地址:https://www.cnblogs.com/dong-/p/9436813.html
Copyright © 2011-2022 走看看