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

    1.正则表达式只和字符串相关
    2.用中括号表示,在同一个位置上只能出现一个符合的字符
    —— 字符组
    3.按照ascii码来匹配的,只能从小到大。#[A-z]  这可以,但是不建议,因为中间还有一些别的字符

    #第一大块——匹配一个字符
    #  .   匹配除换行符之外的所有字符
    #  w  匹配所有字母数字下划线  word
    #  s  任意空白符   space
    #  d  数字  digit
    #  W  匹配非word
    #  S  匹配非space
    #  D  匹配非digit
    #任意两个大小写一起,就是全局  [Dd]
    #  ^   匹配字符串的开始   示例  ^[a-z] 以小写字母开始
    #      出现在[]内,比如[^a-z],除了a-z之外的都匹配
    #  $   匹配字符串的结尾
    #      ^[a-z]$   只能有一个字符,也就是中间的字符组有几个,就匹配几个字符,形成闭合
    #  |  或  示例:a|b,且从左向右,能够匹配左边就不会匹配右边了,所有建议长的放左边
    #  
    换行  	制表符
    #  匹配单词结尾

      #第二大块——匹配多个字符

      # (量词,必须在表达式后面,只能约束前一个字符组)
    #  *  重复0次或多次
    # 贪婪匹配,示例:d*
    # 则后面更多的数字都会匹配,直到写了非数字。没有也是重复了0次,匹配了1次
    
    #  +  重复1次或多次
    # 示例: d+
    # 区别在于*多一个0,这个没有的话就是重复了0次,匹配了0次
    
    #  ?  重复0次或1次
    # 示例: d?
    # 如果两个数,就是匹配3次
    #  {n}  重复n次
    #  {n,}  重复n次或更多次
    #  {n,m}  重复n-m次

      #第三大块 非贪婪匹配、转义

    非贪婪匹配,不加问号就是贪婪
    在量词后面加?   会能少匹配就少匹配
    [^]{1,2}?   仅匹配1个字符
    转义
    对每一个都要进行转义,或者再前面加r就取消含义,直接按''里面的字符算
    前加r就是按照真实意思来——也就是\\d和 r'\d'的效果是一样的,都是匹配“d”字符

      #第四大块  分组和示例

    分组:对整体需要用量词约束的就用小括号括起来再约束
    ([abc][123])+   匹配a1b2c3是匹配一次,得到所有字符
    
    
    示例一:匹配身份证号(15位纯数字,或者18位,末位可以是x,开头不能是0)^[1-9]d{14}(d{2}[0-9x])?$
        ^([1-9]d{16}[0-9x]|[1-9]d{14})$    先取长后取短
    
    示例二:贪婪匹配与非贪婪匹配的区别<sscript.com>+……<sscript.org>
    <.*>   可以匹配<sscript.com>+……<sscript.org>一整行,匹配一次(贪婪匹配)(回溯算法,找最大集合,然后返回)
    <.*?>  可以匹配<sscript.com>和<sscript.org>,匹配两次(非贪婪匹配,惰性匹配)(找?后面第一个符合规则的,然后返回)
    
    示例三:中文不定长,但开头字符一样,以和分割
    冰山和冰美人和冰河世纪
    ↑   [^和]+     匹配下冰山 冰美人 冰河世纪
    ↑   冰[^和]*
    
    示例四:
    .*?x   取前面任意长度,但是直到找到x就会返回,前面的都可以匹配到

    *#问号的用法

    1.作量词,0次或一次

    2.用在两次后面,非贪婪匹配

    3.正则与python,?:表示非分组优先

    总结:

    元字符:

      1.w  s  d   W    S    D

      2. .

      3.  

      4.

      5. ^  $

      6.()  分组,对多个字符的量词进行整体约束

        #re模块:分组是有优先的

            #findall

            #split

      7. |  从左到右,匹配到就不匹配了,所有把长的放前面

      8.[^]  除了字符组内的全匹配

    量词:

      1. *

      2. +

      3. ?

      4. {n}

      5. {n,}

      6. {n,m}

    转义:

      import re

      re.findall(r'\s',r's')

    惰性匹配:

      量词后面加?

      .*?abc   一直取,遇到abc就停

  • 相关阅读:
    HTML5 教程 4 添加点东西
    2.12.ECMAScript运算符
    2.13.JavaScript条件语句
    HTML5 教程 1 介绍
    HTML5 教程 3 设置body
    2.14.JavaScript循环语句
    HTML5 教程 5 选择器属性
    linux 系统中shell实现将fasta文件的碱基转换为一行及还原
    python中pip命令的使用
    R语言中which函数的简单用法,主要用于返回指定条件项的索引
  • 原文地址:https://www.cnblogs.com/lowislucifer/p/11294443.html
Copyright © 2011-2022 走看看