首页 > 其他分享 >正则表达式学习记录

正则表达式学习记录

时间:2023-08-02 12:24:44浏览次数:34  
标签:字符 abc 匹配 记录 正则表达式 修饰符 学习 re

re正则表达式总结

  • 0、一般字符


    字符 意义
    . a.c → abc,aic,a&c等(不包括换行符
    \ 转义字符,让字符变回原来的意思
    [...] 在括号中任选一个:a[bcd] → ab,ac,ad


  • 1、预定义字符

    字符 意义
    \d 匹配一个数字字符,等价于[0-9]
    \D 匹配一个非数字字符,等价于[^0-9]
    \s 匹配任何空白字符如空格、制表符、换页符等等价于[\f,\n,\t,\r,\v]
    \S 非空白字符等价于[^\f,\n,\t,\r,\v]
    \w 匹配任意字母(包括下划线)等价于[A-Z,a-z,0-9,_]
    \W 匹配非单词字符为\w取反


  • 2、数量词

    字符 意义
    * 匹配前一个字符0或无限次,如ab*c → abbc,ac,abc等
    + 匹配前一个字符1或无限次,如ab+c → abc,abbc,abbbc等
    匹配前一个字符0或1次,如ab?c → ac,abc,
    匹配前一个字符m次
    匹配前一个字符m到n次

  • 3、边界匹配(了解,爬虫中很少用)

    字符 意义
    ^ 匹配字符串的开头,如^abc → 匹配以abc开头的字符串
    $ 匹配字符串的结尾,如abc$ → 匹配以abc结尾的字符串
    \A
    \Z

  • (.*?) : "()"中的内容作为返回结果,",*?"匹配任意字符



  • 4、修饰符

    修饰符主要配合后面的各种方法使用

    字符 意义
    re.I 使匹配对大小写不敏感
    re.L 做本地化识别匹配
    re.M 多行匹配,影响^和$
    re.S 使匹配包括换行符在内的所有字符(做多行匹配时用)
    re.U 根据Unicode字符集解析字符。影响\w,\W,\b,\B
    re.X 给予更灵活的格式,以便将正则表达式写得更易理解

    使用的最多的是re.S ,当要匹配的内容有多行时可以使用这个修饰符.
    例如:findall()方法是逐行匹配的,当某行没有匹配到数据时就会从下行开始,这时可以用re.S修饰符使它不再从头开始匹配。
    import re
    a = '''<某标签>数据
    <某标签>'''
    word = re.findall('<某标签>(.*?)<某标签>',a)
    print(word)
    结果得到一个空列表,若加上re.S修饰符即 word = re.findall('<某标签>(.*?)<某标签>',a,re.S) 则会打印"数据 "。



  • 5、search()、sub()、findall()方法

    findall(pattern,string,flag = 0)

    - para:
    - (1)pattern : 要匹配的正则表达式
    - (2)string : 要匹配的字符串
    - (3)flags : 标志位(即修饰符),用于控制正则表达式的匹配方式,比如换行匹配,是否区分大小写等。


    search(pattern,string,flags = 0)

    - para:
    - (1)pattern : 要匹配的正则表达式
    - (2)string : 要匹配的字符串
    - (3)flags : 标志位(即修饰符),用于控制正则表达式的匹配方式,比如换行匹配,是否区分大小写等。

    search方法用于在给定的字符串中搜索与指定的模式匹配的内容,并返回一个匹配对象(Match object)。匹配对象是包含匹配结果的特殊对象,它具有各种属性和方法,可用于获取有关匹配的详细信息。如果找到了匹配项,则search方法返回匹配对象;如果没有找到匹配项,则返回None。
    例:
    import re
    a = 'one1two2three3'
    infos = re.search('\d+',a)
    print(infos)

    结果:<_sre.SRE_Match object; span(3,4),match='1'>
    print(infos.group())#可以通过group方法获取匹配对象的值。在这种情况下,match.group()返回整个匹配项,match.group(1)返回第一个捕获组,match.group(2)返回第二个捕获组
    search方法只返回第一个匹配项,因此它通常用于判断是否存在匹配项或仅需获取第一个匹配项的情况。而findall方法适用于需要获取所有匹配项的情况,且findall方法返回的是一个列表。


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

    - para:
    - (1)pattern: 要匹配的正则表达式
    - (2)repl: 要用来替换的字符串
    - (3)string: 要被查找替换的原始字符串
    - (4)count: 模式匹配后替换的最大次数,默认0表示替换所有的匹配
    - (5)flags: 标志位,同search

    例:将123-456-789中的"-"去掉
    import re
    phone = '123-456-789'
    new_phone = re.sub('\D','',phone)
    print(new_phone)
    结果为:123456789

标签:字符,abc,匹配,记录,正则表达式,修饰符,学习,re
From: https://www.cnblogs.com/littlejazzcat/p/17600342.html

相关文章

  • JavaScript学习 -- SM4算法应用实例
    SM4算法,也被称为国密算法,是中国公布的一种高效且安全的对称加密算法。在JavaScript中,我们可以通过使用CryptoJS库来实现SM4算法的加密和解密。本篇博客将为您介绍如何在JavaScript中使用SM4算法,并提供一个实际的案例。首先,确保您已经引入了CryptoJS库。以下是一个使用SM4算法进行加......
  • FPGA学习笔记 Label: Research
    [Synth8-9486]formalport'addr'hasnoactualordefaultvalue[D:/FPGA/TEST_CARD_HIT/top.vhd:492]有端口没有连接,在top文件中把端口加上 [Opt31-67]Problem:ALUT2cellinthedesignismissingaconnectiononinputpinI1,whichisusedbytheLUTequat......
  • OpenCV实战:从图像处理到深度学习的全面指南
    本文深入浅出地探讨了OpenCV库在图像处理和深度学习中的应用。从基本概念和操作,到复杂的图像变换和深度学习模型的使用,文章以详尽的代码和解释,带领大家步入OpenCV的实战世界。1.OpenCV简介什么是OpenCV?OpenCV(OpenSourceComputerVisionLibrary)是一个开源的计算机视觉和......
  • [问题记录] Cmd执行soffice命令,无法识别
    描述:最近遇到一个需求,需要将用户上传word,Excel自动转换成PDF.同事推荐使用LibreOffice(https://www.libreoffice.org/)。后端是C#WebApi,网上示例是用后端调用本地CMD,执行soffice命令,去执行转换动作。遇到的问题是安装了LibreOffice并配置了环境变量(在Path变......
  • Java学习-3
    今天做了一个Java罗马数字转实际数字的题目,学习到了map的基本用法,以及调用时需要注意的一些事情。同时期间也学习了println的输出方法。classSolution{publicintromanToInt(Strings){Map<String,Integer>map=newHashMap<>();map.put("I",1);......
  • 1、深度学习pytroch的张量使用
    1、构建项目 2、给项目命名和指定解释器,解释器用我们的虚拟环境 3.创建包 4、创建文件 ......
  • Blazor学习之旅(10)多语言+本地化
    大家好,我是Edison。在上一篇我提到了接下来会介绍一下如何在Blazor中实现多语言,这就安排上了。多语言+本地化的背景在Web应用开发中,我们可能会有一些需要多语言+本地化的场景,特别在一些国际化的外资企业当中特别常见。例如,Edison所在的IT开发团队,就需要英语,中文和德语三种语言......
  • ugui学习 - PC键盘输入
    最终效果 实现的功能a)点击后显示了光标,才能输入b)按esc,退出输入,光标会隐藏c)输入时,内容加在光标后面d)Backspace删除光标后的字符e)Delete删除光标前的字符usingUnityEngine;usingUnityEngine.EventSystems;usingUnityEngine.UI;publicclassMyI......
  • 基于ResNet-101深度学习网络的图像目标识别算法matlab仿真
    1.算法理论概述       介绍ResNet-101的基本原理和数学模型,并解释其在图像识别中的优势。然后,我们将详细介绍如何使用深度学习框架实现ResNet-101,并在图像数据集上进行训练和测试。最后,我们将总结本文的主要内容并提出进一步的研究方向。 1.1、ResNet-101的基本原理......
  • k8s 学习笔记之基础实战入门
    NamespaceNamespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。默认情况下,kubernetes集群中的所有的Pod都是可以相互访问的。但是在实际中,可能不想让两个Pod之间进行互相的访问,那此时就可以将两个Pod划分到不同的n......