zoukankan      html  css  js  c++  java
  • 学习正则表达式笔记(一)

    1.正则表达式简介

       正则表达式为高级的文本模式匹配,抽取,与和或形式的搜索和替换功能提供了基础。也就是说正则表达式(RegEx)能匹配到多个字符,你就可以很容易的操作这些匹配到的字符,只要你运用正确的字符和特殊符号。

      Python中通过导入 re 模块来支持正则表达式。

    2.常见的正则表达式符号和特殊字符

      2.1符号

      

    符号表示法

    描述 示例

    literal

    匹配文本字符串的字面值 literal,即匹配原始字符 foo
    re1|re2 匹配正则表达式 re1 或者 re2,中间的 | 相当于或,可以匹配两边的字符 foo|bar
    .

    匹配任何字符(除了 之外),点可以匹配任何值,除了换行符,空白这些都可以匹配

    b.b
    ^ 表示匹配开始的位置,如^Dear,表示匹配从Dear开始匹配,在Dear前的字符不管 ^Dear
    $ 表示匹配终止位置,如end$,表示遇到end就停止匹配,在end之后的字符就不匹配了 end$
    *

    表示匹配任意次数,即可以匹配0次,也可以匹配100次,如[A-Za-z0-9]*,

    就表示可以匹配方括号内所有字母,数字任意次数,可以可以用来匹配电子邮件地址

    [A-Za-z0-9]*
    + 表示匹配一次以上,即至少要匹配一次,如a+,表示匹配a至少一次 a+
    ?

    表示匹配 0 次或者 1 次前面出现的正则表达式,

    goo?,就表示可以匹配到goo一次或没匹配到goo

    goo?
    […] 表示匹配来自字符集的任意单一字符,在方括号中就可以 [aeiou]
    {N} 表示匹配前面的正则表达式N次,如[0-9]{3} ,就表示可以,在1到9中,匹配3次 [0-9]{3}
    {M,N} 表匹配 M~N 次前面出现的正则表达式,如[0-9]{5,9},就表示匹配5到9次 [0-9]{5,9}
    [..x−y..] 表示匹配 x ~ y 范围中的任意单一字符 [0-9], [A-Za-z]
    [^…] 不匹配此字符集中出现的任何一个字符,包括某一范围的字符 [^aeiou]
    (…) 表示匹配封闭的正则表达式,然后另存为子组,用于分组 ([0-9]{3})?
    (*|+|?|{})? 用于匹配上面频繁出现/重复出现符号的非贪婪版本(*、+、?、{}) .*?[a-z]

      2.2 特殊字符

    特殊字符

    表示法

    描述 示例
    d

    匹配任何十进制数字,与[0-9]一致(D 与d 相反,不匹配任何非数值型的数字),

    如d+,表示可以匹配多个数字

    d+
    w 匹配任何字母数字字符,与[A-Za-z0-9_]相同(W与之相反) [A-Za-z_]w+
    s

    匹配任何空格字符,与[ vf]相同(S 与之相反),

    ofsthe,表示of和the之间有个空格

    ofsthe
     匹配任何单词边界(B 与之相反),如The ,就表示仅仅匹配单词 the The
    N 匹配已保存的子组 N(参见上面的(…)) price: 16
    c 逐字匹配任何特殊字符 c(即,仅按照字面意义匹配,不匹配特殊含义) ., \, *
    A() 匹配字符串的起始(结束)(另见上面介绍的^和$) ADear

        学会了上面的正则表达式符号和特殊字符,剩下的就是灵活组合成需要的正则表达式,多熟悉就好了。

    3.正则表达式和 Python 语言

    3.1 re 模块函数和正则表达式对象的方法

      1.Python使用模块re,来支持正则表达式,导入方法: import re

      2.使用 compile(pattern,flags = 0) 来编译正则表达式的模式。

      3.使用 match(pattern,string,flags=0) 来匹配字符串。如果匹配成功,就返回匹配对象;如果失败,就返回 None。

      4.使用search(pattern,string,flags=0)  来搜索需要的字符串,如果匹配成功,则返回匹 配对象;如果失败,则返回 None 。

      5.使用findall(pattern,string [, flags] ) 来寻找所有匹配到的字符串,并返回一个匹配列表。

      6.使用find(pattern,string [, flags] ) 只会找到满足匹配要求的第一个字符串。即只匹配最前面的一个。

    3.2 常用的模块属性

      1.re.I、re.IGNORECASE,表示不区分大小写的匹配。

      2.re.L、re.LOCALE,根据所使用的本地语言环境通过w、W、、B、s、S 实现匹配。

      3.re.M、re.MULTILINE,^和$分别匹配目标字符串中行的起始和结尾,而不是严格匹配整个字符串本身的起始和结尾。

      4.re.S、rer.DOTALL,“.”(点号)通常匹配除了 (换行符)之外的所有单个字符;该标记表示“.”(点号) 能够匹配全部字符。

      5.re.X、re.VERBOSE,通过反斜线转义,否则所有空格加上#(以及在该行中所有后续文字)都被忽略,除非在一个字符类中或者允许注释并且提高可读性。

  • 相关阅读:
    Nginx实战系列之功能篇----后端节点健康检查
    nginx大量TIME_WAIT的解决办法
    Nginx 获取真实 IP 方案
    Redis基本操作——List
    redis-cli 命令总结
    redis 学习笔记-cluster集群搭建
    redis集群部署及常用的操作命令_01
    redis配置文件参数详解
    Redis 主从配置和参数详解
    Tomcat源码分析-开篇(Tomcat源码部署运行 Maven方式)
  • 原文地址:https://www.cnblogs.com/zt19994/p/7449964.html
Copyright © 2011-2022 走看看