速通Python正则表达式

这篇具有很好参考价值的文章主要介绍了速通Python正则表达式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

几乎所有语言中的正则表达式都有相类似的语法,python亦莫能外。

快速入门

#后续代码均默认导入re,且使用test
import re
test = '''
`[]`表示一个字符集合,在匹配时可以匹配集合中的任意值。例如`[abc]`可以匹配`asdzxc`中的`a`和`c`。
通过`-`可以表示某个范围,例如`[a0-9]`表示匹配`a`和数字。
在`[]`中,特殊字符`+*()`将失去意义,会以普通的字符形式出现。而`^`将表示`非`,使用`^`之后将忽略对`[]`中的值的匹配。
'''

接下来直观地看一下最常用的的三大函数

>>> print(re.match(r'[0-9]',test))
None
>>> re.search(r'[0-9]',test)
<re.Match object; span=(81, 82), match='0'>
>>> test[81:82]
'0' #说明search匹配到了0
>>> re.findall(r'[0-9]',test)
['0', '9']

其中,re.match要求从头匹配;search可以从任意位置匹配,但只返回第一个匹配的值的位置;findall返回所有符合要求的值。

匹配格式

任意字符

  • . 匹配除了换行符之外的所有字符,在DOTALL模式下包括换行符

开头结尾符号

  • ^ 匹配字符串的开头,在MULTILIME模式下为行开头
  • $ 匹配字符串结尾,在MULTILIME模式下匹配行结尾

后置修饰符,针对修饰符前面的正则表达式进行匹配

  • * 匹配0到任意次重复,例如a*b可以匹配babaab等等
  • + 匹配1到任意次重复,例如a*b不可匹配b,但可匹配abaab等等
  • ? 匹配0或1次,例如a?b只能匹配aaaab中的ab
  • {m} 匹配m次,而且不可更改。例如a{2}只能匹配aa
  • {m,n} 匹配m到n次重复,且尽可能多,例如a{2,4}可以匹配aaaaaaaaa

此外,?可以修饰其他后置修饰符,表示非贪婪形式,例如a{2,4}将尽可能少地匹配出现的字符。

或运算符|可以连接两个正则表达式,例如A|B可以匹配A或者B

[]表达式

[]表示一个字符集合,在匹配时可以匹配集合中的任意值。例如[abc]可以匹配asdzxc中的ac

通过-可以表示某个范围,例如[a0-9]表示匹配a和数字。

[]中,特殊字符+*()将失去意义,会以普通的字符形式出现。而^将表示,使用^之后将忽略对[]中的值的匹配。

转义字符

除了Python中的标准转义字符之外,正则表达式还提供了一些其他含义的转义字符。

小写 匹配内容 大写 匹配内容
\w 数字字母下划线 \W 非数字字母下划线
\s 空白字符 \S 非空白字符
\d 数字 \D 非数字
\A 字符开始
\z 字符结束 \Z 只匹配到换行前的结束字符
\b 单词便捷 \B 非单词便捷

正则表达式标签:

re.match等函数的输入参数为

re.match(pattern, string, flags=0)

其中,pattern即为将要匹配的模式;string为待匹配字符串,flag则是正则表达式的标签,起到一些其他的作用,可选参数如下

模式 简写 说明
re.ASCII re.A 只匹配ASCII
re.UNICODE re.U 根据Unicode解析字符(默认)
re.IGNORECASE re.I 对大小写不敏感
re.LOCALE re.L 由当前语言决定\w, \W, \b, \B以及大小写匹配
re.MULTILINE re.M 多行匹配
re.DOTALL re.S 匹配包括换行在内的所有字符
re.VERBOSE re.X 认为#后面的是注释
re.TEMPLATE re.T 禁用回溯
re.DEBUG 显示编译时的debug信息

Pattern

通过re.compile可以将待匹配字符串编译为正则对象Pattern,可更加方便地进行调用。例如

>>> p = re.compile(r'[0-9]')
>>> p.findall(test)
['0', '9']
>>> p.pattern       #pattern属性即编译前的字符串形式
'[0-9]'

Pattern对象中的成员方法可以和re模块下的函数实现相同的功能。记pat为正则字符串,pre.compile(pat)编译而成的正则对象,则就findall这个函数而言,re.findall(pat,test)就等价于p.findall(test)

除了findall之外,下表中的函数均支持这种转换文章来源地址https://www.toymoban.com/news/detail-739131.html

  • search:返回第一个匹配位置的对象;如无匹配返回None
  • match:要求从头匹配,其余和search相同
  • fullmatch:若整个test与正则表达式匹配则返回匹配对象,否则返回None
  • findall:返回所有匹配内容的列表
  • finditer:返回所有匹配位置的列表
  • spilt:通过正则表达式对字符串进行分割
  • sub:用于字符串的替代
  • subn:与sub()相同,但是返回一个元组
  • escape:对正则表达式中的特殊字符进行转义

到了这里,关于速通Python正则表达式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python-re模块-正则表达式模块常用方法

    Python的re模块提供了正则表达式的功能,可以用来进行高级的字符串匹配和处理。re模块的主要功能包括: 编译正则表达式 - 使用re.compile()可以编译正则表达式字符串,生成正则表达式对象。 匹配字符串 - 使用正则表达式对象的match()、search()、findall()等方法可以在字符串进行匹配

    2024年02月14日
    浏览(33)
  • 006集 正则表达式 re 应用实例—python基础入门实例

    正则表达式指预先定义好一个 “ 字符串模板 ” ,通过这个 “ 字符串模 板” 可以匹配、查找和替换那些匹配 “ 字符串模板 ” 的字符串。 Python的中 re 模块,主要是用来处理正则表达式,还可以利用 re 模块通过正则表达式来进行网页数据的爬取和存储。 正则表达式的英文

    2024年02月01日
    浏览(48)
  • python re.findall和re.search同样的正则表达式,为什么规则不一样??

    今天遇到一个问题,在使用python的re.findall和re.search的过程中,发现一个奇怪的事情,同样的表达式,两者的表现却不一样,例如下述代码: res1是我所希望的结果,然后查了一段时间的原因,发现二者是在使用捕获分组(xxx)和非捕获分组(?:xxx)有区别,re.search使用的是非捕获方

    2024年02月16日
    浏览(39)
  • 【100天精通python】Day23:正则表达式,基本语法与re模块详解示例

      目录  专栏导读  1 正则表达式概述 2 正则表达式语法 2.1 正则表达式语法元素

    2024年02月14日
    浏览(42)
  • re --- 正则表达式操作

    模式和被搜索的字符串既可以是 Unicode 字符串 (str) ,也可以是8位字节串 (bytes)。 但是,Unicode 字符串与 8 位字节串不能混用:也就是说,不能用字节串模式匹配 Unicode 字符串,反之亦然;同理,替换操作时,替换字符串的类型也必须与所用的模式和搜索字符串的类型一致。

    2024年02月08日
    浏览(38)
  • 正则表达式 re模块

    正则表达式: 一种使用表达式的方式 对字符串进行匹配的语法规则   可以在如下网站中测试正则表达式 在线正则表达式测试 (oschina.net) ①元字符: .          匹配除换⾏符以外的任意字符 w       匹配字⺟或数字或下划线 s        匹配任意的空⽩符 d      

    2024年02月06日
    浏览(35)
  • 【从零学习python 】63.正则表达式中的re.Match类及其属性和方法介绍

    当我们调用 re.match 方法、 re.search 方法,或者对 re.finditer 方法的结果进行迭代时,拿到的数据类型都是 re.Match 对象。 这个类里定义了相关的属性,可以直接让我们来使用。 属性和方法 说明 pos 搜索的开始位置 endpos 搜索的结束位置 string 搜索的字符串 re 当前使用的正则表达

    2024年02月11日
    浏览(43)
  • 正则表达式 re库的使用

    模式 描述 ^ 匹配 字符串的开始 w 匹配 字母数字及下划线 W 匹配 非 字母数字及下划线 s 匹配 任意空白字符,即空格 S 匹配 任意 非空 字符 d 匹配 任意数字,等价于[0-9], d+ 表示匹配多个数字 D 匹配 任意 非 数字 A 匹配字符串开始 Z 匹配字符串结束,如果是存在换行,

    2024年02月10日
    浏览(49)
  • 8.网络爬虫—正则表达式RE实战

    前言 : 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️:Python领域新星创作者,CSDN实力新星认证 📝​📝​此专栏文章是专门针对网络爬虫基础,欢迎免费订阅! 📝​📝第一篇文章《1.认识网络爬虫》获得 全站热榜第一 ,python 领域热榜第一 , 第四篇文章《4.网络爬虫—

    2023年04月08日
    浏览(67)
  • Python re.findall()中的正则表达式包含多个括号时的返回值——包含元组的列表

    当 re.findall() 中的正则表达式包含多个括号时,返回值是一个列表,其中每个元素都是一个元组。这个元组的长度与正则表达式中括号的数量相同,元组中的每个元素都是与相应括号中的模式匹配的文本。 输出:

    2024年02月19日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包