zoukankan      html  css  js  c++  java
  • python常识系列14-->正则表达式基础之re模块

    前言

       勤奋的含义是今天的热血,而不是明天的决心,后天的保证。
    

    一、正则表达式是什么?

    • 描述了一种字符串匹配的模式(pattern)
    • 功能一:用来检查一个字符串串是否含有某种子字符串
    • 功能二:将匹配的子串(满足规则的字符串)进行替换
    • 功能三:从某个字符串中取出符合某个条件的子
    • ......

    二、re模块简介

    • re模块是python独有的匹配字符串的模块
    • 该模块中的很多功能是基于正则表达式实现的
    • Python自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式

    三、正则表达式基础语法

       需要使用re模块,必须对正则表达式有一定的掌握,以下先介绍正则的一些基础知识。
    

    3.1 正则表达式中的元字符

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

    3.2 正则表达式中的量词

    量词 用法说明
    * 重复零次或更多次
    + 重复一次或更多次
    ? 重复零次或一次
    {n} 重复n次
    {n,} 重复n次或更多次
    {n,m} 重复n到m次

    四、re模块代码基础及应用

    4.1 re模块中的函数介绍

    • re.compile(pattern,flags = 0 ):用于编译正则表达式,生成一个正则表达式对象
    • re.search(pattern,string,flags = 0 ):扫描字符串以查找正则表达式模式产生匹配项的第一个位置 ,然后返回相应的match对象。
    • re.match(pattern,string,flags = 0 ):如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的匹配对象。
    • re.fullmatch(pattern,string,flags = 0 ):如果整个字符串与正则表达式模式匹配,则返回相应的match对象。
    • re.split(pattern,string,maxsplit = 0,flags = 0 ):通过出现模式来拆分字符串。
    • re.findall(pattern,string,flags = 0 ):以string列表形式返回string中pattern的所有非重叠匹配项。
    • re.finditer(pattern,string,flags = 0 ):返回一个迭代器,该迭代器在string类型的RE 模式的所有非重叠匹配中产生匹配对象。
    • re.sub(pattern,repl,string,count = 0,flags = 0 ):返回通过用替换repl替换字符串中最左边的不重叠模式所获得的字符串。

    4.2 re模块 macth方法 基础写法一

    import re
    
    #group()方法得到匹配的字符串,如果字符串没有匹配,则返回None
    value = re.match( 'classd8' , 'class58' ).group()
    print( value )
    

    4.3 re模块 macth方法 基础写法二

    import re
    
    #创建正则表达式对象
    str_c = re.compile('classd8')
    #group()方法得到匹配的字符串,如果字符串没有匹配,则返回None
    value = str_c.match('class58').group()
    print( value )
    

    上述代码说明:上述两种写法都可以完成 re模块 的应用,4.2的例子是直接把正则表达式放入match的第一个参数中;4.3的例子是先创建正则表达式对象,由对象进行match方法的调用。

    4.4 re模块 search方法 基础

    import re
    
    #创建正则表达式对象
    str_c = re.compile('d8')
    
    value = str_c.search('class58').group()
    print( value )
    

    上述代码说明:如果吧search()改为match()方法,则会报错,因为 match()仅在字符串的开头匹配,search()检查匹配项,在字符串中的任何位置检查匹配项

    五、小结

    • 学习re模块需要先有正则表达式的知识做铺垫
    • 上述由于篇幅原因,关于其它的正则表达式的应用读者可以根据我的例子去进行扩展
  • 相关阅读:
    dsaljkfgklj;asdfkjlsa
    aaaaaaaaa
    实验 7 综合练习 第三题
    实验 7 综合练习 第一题
    实验 7 综合练习 第四题
    实验 7 综合练习 第二题
    实验6 1
    实验 5-2
    实验5-1
    3-6
  • 原文地址:https://www.cnblogs.com/dream66/p/12953729.html
Copyright © 2011-2022 走看看