• Python笔记3-正则表达式


    1. 正则表达式中常用的字符

    符号 描述

    . 匹配任意一个字符(除了\n)

    [] 匹配列表中的字符

    \w 匹配字母、数字、下划线,即 a-z,A-Z,0-9,_

    \W 匹配不是字母、数字、下划线

    \s 匹配空白字符,即空格(\n,\t)

    \S 匹配不是空白的字符

    \d 匹配数字,即 0-9

    \D 匹配非数字的字符

    ^ 匹配字符串开头

    $ 匹配字符串结尾。

    \b 匹配一个单词的边界

    \B 匹配非单词的边界

    【注】^与[^m]中的“^”的含义并不相同,后者“^”表示“除了….”的意思

    2、re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

    3、贪婪模式指 Python 里数量词默认是贪婪的,总是尝试匹配尽可能多的字符。非贪婪模

    式与贪婪相反,总是尝试匹配尽可能少的字符,可以使用"*","?","+","{m,n}"后面加上?,使

    贪婪变成非贪婪

    4、只配置中文

    1. s = "士大夫卡A 的24东走西顾堪"
    2. filtrate = re.compile(u'[^\u4E00-\u9FA5]')
    3. filtered_str = filtrate.sub(r'', s)
    4. print(filtered_str)
    5. #输出
    6. #士大夫卡的东走西顾堪

    5、Python 的 re 模块提供了re.sub用于替换字符串中的匹配项。

    re.sub(pattern, repl, string, count=0, flags=0)

    参数:

    • pattern : 正则中的模式字符串。
    • repl : 替换的字符串,也可为一个函数。
    • string : 要被查找替换的原始字符串。
    • count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配

    1. import re
    2. phone = "1-1452839475-4352 #Location oscar retwertqe"
    3. # 去掉location前面的字符
    4. num = re.sub(r'^.*[lL]ocation', "location", phone, 1)
    5. print("电话号码是: ", num)
    6. # 删除非数字(-)的字符串
    7. num = re.sub(r'\D', "", phone)
    8. print("电话号码是 : ", num)

    6、re.compile 函数 :参考Python 正则表达式 | 菜鸟教程

    compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。

    re.compile(pattern[, flags])

    参数:

    • pattern : 一个字符串形式的正则表达式

    • flags : 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:

      1. re.I 忽略大小写
      2. re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
      3. re.M 多行模式
      4. re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
      5. re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库
      6. re.X 为了增加可读性,忽略空格和 # 后面的注释
        1. pattern = re.compile(r'([a-z]+) ([a-z]+)', re.I) #re.I 忽略大小写
        2. m = pattern.match('Hello World Wide Web')
        3. print(m)
        4. print(m.group(0))
        5. print(m.groups())
        6. #输出结果:
        7. #
        8. #Hello World
        9. #('Hello', 'World')
  • 相关阅读:
    2022_08_04_106期__栈和队列
    机器学习基础-数据分析:房价预测
    【AWS】实操-保护 Amazon S3 VPC 终端节点通信
    基于 Rainbond 的 Pipeline(流水线)插件
    关于Spring遇到的各种问题
    【C++】详解map和set基本接口及使用
    Eureka Series : MSVC puTTY + psFTP Dev
    基于EXCEL数据表格创建省份专题地图
    关于spring项目中,security 对websocket请求和拦截问题
    【目标跟踪-卡尔曼滤波】基于分布式Kalman滤波跟踪运动目标附Matlab代码
  • 原文地址:https://blog.csdn.net/oscarli/article/details/126041969