正则表达式的包含的内容范围比较广,有相关语言的函数,方法,可选标志,模式等。这里我们专门介绍各种模式并给出示例。
正则表达式模式:
模式字符串使用特殊的语法来表示一个正则表达式:
字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的字符串。
多数字母和数字前加一个反斜杠时会拥有不同的含义。
标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。
反斜杠本身需要使用反斜杠转义。
由于正则表达式通常都包含反斜杠,所以你最好使用原始字符串来表示它们。模式元素(如 r’\t’,等价于 \t )匹配相应的特殊字符。
下表列出了正则表达式模式语法中的特殊元素。如果你使用模式的同时提供了可选的标志参数,某些模式元素的含义会改变。
这里我们先给出模式截图,如图所示,图片来源于菜鸟教程:


对模式进一步演示之前我们先介绍几个下面将要经常用到的方法。
findall() 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
\d匹配任意数字,等价于[0-9]。
+匹配1个或多个表达式。
则\d+匹配一个或更多连续的数字。
我们下面将经常用到这个字符串

test_3='gygfgyhh1 321#@¥¥……?4564567441890ee344uy565%¥……\&%*#/、、}请问fgg\dfdsffhgf>.,65456721332S2#@s1!#$%^&*(()-2呃呃3饿饿32の\nwqdewdwedwqd[wang王宇轩18'

代码栏为代码与注释,下面为运行结果

print(re.findall('\d+',test_3))  #匹配所有的连续数字,d匹配数字,+匹配1到多个数字,d+匹配连续的的数字,findall匹配所有的子串。

[‘1’, ‘321’, ‘4564567441890’, ‘344’, ‘565’, ‘65456721332’, ‘2’, ‘1’, ‘2’, ‘3’, ‘32’, ‘18’]

print(re.findall('^g',test_3))   #^从头开始匹配,\d表示匹配数字,即从头开始配数字
print(re.findall('\d+$',test_3))  #$从末尾开始匹配

[‘g’]
[‘18’]

print(re.findall('\d.',test_3))  #.匹配任意字符,除了换行符,这里为数字与任意字符组合

['1 ', ‘32’, ‘1#’, ‘45’, ‘64’, ‘56’, ‘74’, ‘41’, ‘89’, ‘0e’, ‘34’, ‘4u’, ‘56’, ‘5%’, ‘65’, ‘45’, ‘67’, ‘21’, ‘33’, ‘2S’, ‘2#’, ‘1!’, ‘2呃’, ‘3饿’, ‘32’, ‘18’]

print(re.findall('\d...',test_3))  #...用来表示一组字符,3个.即为匹配3个任意字符

[‘1 32’, ‘1#@¥’, ‘4564’, ‘5674’, ‘4189’, ‘0ee3’, ‘44uy’, ‘565%’, ‘6545’, ‘6721’, ‘332S’, ‘2#@s’, ‘1!#$’, ‘2呃呃3’]

print(re.findall('\d[23]',test_3))  #用来表示一组字符,单独列出:[23]匹配2或者3

[‘32’, ‘72’, ‘13’, ‘32’, ‘32’]

print(re.findall('\d[^23]',test_3))  #不在[]中的字符:[^23] 匹配除了2,3之外的字符。

['1 ', ‘21’, ‘45’, ‘64’, ‘56’, ‘74’, ‘41’, ‘89’, ‘0e’, ‘34’, ‘4u’, ‘56’, ‘5%’, ‘65’, ‘45’, ‘67’, ‘21’, ‘2S’, ‘2#’, ‘1!’, ‘2呃’, ‘3饿’, ‘2の’, ‘18’]

print(re.findall('\d*',test_3))  #匹配0或多个的表达式,这里即匹配0到多个的数字

[’’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘1’, ‘’, ‘321’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘4564567441890’, ‘’, ‘’, ‘344’, ‘’, ‘’, ‘565’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘65456721332’, ‘’, ‘2’, ‘’, ‘’, ‘’, ‘1’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘2’, ‘’, ‘’, ‘3’, ‘’, ‘’, ‘32’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘18’, ‘’]

print(re.findall('\d?',test_3))  #匹配0个或一个由前面的正则表达式定义的片段,非贪婪模式(即匹配到就返回)

[’’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘1’, ‘’, ‘3’, ‘2’, ‘1’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘4’, ‘5’, ‘6’, ‘4’, ‘5’, ‘6’, ‘7’, ‘4’, ‘4’, ‘1’, ‘8’, ‘9’, ‘0’, ‘’, ‘’, ‘3’, ‘4’, ‘4’, ‘’, ‘’, ‘5’, ‘6’, ‘5’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘6’, ‘5’, ‘4’, ‘5’, ‘6’, ‘7’, ‘2’, ‘1’, ‘3’, ‘3’, ‘2’, ‘’, ‘2’, ‘’, ‘’, ‘’, ‘1’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘2’, ‘’, ‘’, ‘3’, ‘’, ‘’, ‘3’, ‘2’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘1’, ‘8’, ‘’]

print(re.findall('\d{2}',test_3))  #匹配n个前面的字符,比如该例子为匹配两个数字

[‘32’, ‘45’, ‘64’, ‘56’, ‘74’, ‘41’, ‘89’, ‘34’, ‘56’, ‘65’, ‘45’, ‘67’, ‘21’, ‘33’, ‘32’, ‘18’]

print(re.findall('\d{2,}',test_3))  #精确匹配n个前面表达式,如d{2,}等价于\d\d+
print(re.findall('\d\d+',test_3))

[‘321’, ‘4564567441890’, ‘344’, ‘565’, ‘65456721332’, ‘32’, ‘18’]
[‘321’, ‘4564567441890’, ‘344’, ‘565’, ‘65456721332’, ‘32’, ‘18’]

print(re.findall("\d{2,4}",test_3))  #匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式

[‘321’, ‘4564’, ‘5674’, ‘4189’, ‘344’, ‘565’, ‘6545’, ‘6721’, ‘332’, ‘32’, ‘18’]

print(re.findall("[1|2|4]",test_3))  #a| b 匹配a或b。这里匹配1或2或4

[‘1’, ‘2’, ‘1’, ‘4’, ‘4’, ‘4’, ‘4’, ‘1’, ‘4’, ‘4’, ‘4’, ‘2’, ‘1’, ‘2’, ‘2’, ‘1’, ‘2’, ‘2’, ‘1’]

print(re.findall("(\d)",test_3))  #(re)    匹配括号内的表达式,也表示一个组

[‘1’, ‘3’, ‘2’, ‘1’, ‘4’, ‘5’, ‘6’, ‘4’, ‘5’, ‘6’, ‘7’, ‘4’, ‘4’, ‘1’, ‘8’, ‘9’, ‘0’, ‘3’, ‘4’, ‘4’, ‘5’, ‘6’, ‘5’, ‘6’, ‘5’, ‘4’, ‘5’, ‘6’, ‘7’, ‘2’, ‘1’, ‘3’, ‘3’, ‘2’, ‘2’, ‘1’, ‘2’, ‘3’, ‘3’, ‘2’, ‘1’, ‘8’]

下面几组适合比对记忆,因此放在一块

print(re.findall("\w","test_3"))  #匹配数字字母下划线
print(re.findall("\W",test_3))  #匹配非数字字母下划线

[‘t’, ‘e’, ‘s’, ‘t’, ‘_’, ‘3’]
[’ ', ‘#’, ‘@’, ‘¥’, ‘¥’, ‘…’, ‘…’, ‘?’, ‘%’, ‘¥’, ‘…’, ‘…’, ‘\’, ‘&’, ‘%’, ‘’, ‘#’, ‘/’, ‘、’, ‘、’, ‘}’, ’ ', ’ ', ’ ', ’ ', ’ ', ’ ', ’ ', ’ ', ‘>’, ‘.’, ‘,’, ‘#’, ‘@’, ‘!’, ‘#’, ‘$’, ‘%’, ‘^’, ‘&’, '’, ‘(’, ‘(’, ‘)’, ‘-’, ‘\n’, ‘[’]

print(re.findall('\s',test_3))  #匹配任意空白字符,等价于[\t\n\r\f]
print(re.findall('\S',test_3))  #匹配任意非空字符

[’ ', ’ ', ’ ', ’ ', ’ ', ’ ', ’ ', ’ ', ’ ', ‘\n’]
[‘g’, ‘y’, ‘g’, ‘f’, ‘g’, ‘y’, ‘h’, ‘h’, ‘1’, ‘3’, ‘2’, ‘1’, ‘#’, ‘@’, ‘¥’, ‘¥’, ‘…’, ‘…’, ‘?’, ‘4’, ‘5’, ‘6’, ‘4’, ‘5’, ‘6’, ‘7’, ‘4’, ‘4’, ‘1’, ‘8’, ‘9’, ‘0’, ‘e’, ‘e’, ‘3’, ‘4’, ‘4’, ‘u’, ‘y’, ‘5’, ‘6’, ‘5’, ‘%’, ‘¥’, ‘…’, ‘…’, ‘\’, ‘&’, ‘%’, ‘’, ‘#’, ‘/’, ‘、’, ‘、’, ‘}’, ‘请’, ‘问’, ‘f’, ‘g’, ‘g’, ‘d’, ‘f’, ‘d’, ‘s’, ‘f’, ‘f’, ‘h’, ‘g’, ‘f’, ‘>’, ‘.’, ‘,’, ‘6’, ‘5’, ‘4’, ‘5’, ‘6’, ‘7’, ‘2’, ‘1’, ‘3’, ‘3’, ‘2’, ‘S’, ‘2’, ‘#’, ‘@’, ‘s’, ‘1’, ‘!’, ‘#’, ‘$’, ‘%’, ‘^’, ‘&’, '’, ‘(’, ‘(’, ‘)’, ‘-’, ‘2’, ‘呃’, ‘呃’, ‘3’, ‘饿’, ‘饿’, ‘3’, ‘2’, ‘の’, ‘w’, ‘q’, ‘d’, ‘e’, ‘w’, ‘d’, ‘w’, ‘e’, ‘d’, ‘w’, ‘q’, ‘d’, ‘[’, ‘w’, ‘a’, ‘n’, ‘g’, ‘王’, ‘宇’, ‘轩’, ‘1’, ‘8’]

print(re.findall('\d',test_3))  #匹配任意数字,等价于 [0-9]。
print(re.findall('\D',test_3))  #匹配任意非数字
['1', '3', '2', '1', '4', '5', '6', '4', '5', '6', '7', '4', '4', '1', '8', '9', '0', '3', '4', '4', '5', '6', '5', '6', '5', '4', '5', '6', '7', '2', '1', '3', '3', '2', '2', '1', '2', '3', '3', '2', '1', '8']
['g', 'y', 'g', 'f', 'g', 'y', 'h', 'h', ' ', '#', '@', '¥', '¥', '…', '…', '?', 'e', 'e', 'u', 'y', '%', '¥', '…', '…', '\\', '&', '%', '*', '#', '/', '、', '、', '}', '请', '问', 'f', 'g', 'g', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'd', 'f', 'd', 's', 'f', 'f', 'h', 'g', 'f', '>', '.', ',', 'S', '#', '@', 's', '!', '#', '$', '%', '^', '&', '*', '(', '(', ')', '-', '呃', '呃', '饿', '饿', 'の', '\n', 'w', 'q', 'd', 'e', 'w', 'd', 'w', 'e', 'd', 'w', 'q', 'd', '[', 'w', 'a', 'n', 'g', '王', '宇', '轩']
print(re.findall('\Ag',test_3))  #匹配字符串开始
print(re.findall('8\Z',test_3))  #匹配字符串结束,如果存在换行,只匹配到换行前的结束字符串
print(re.findall('8',test_3))  #与加结束\Z对比

[‘g’]
[‘8’]
[‘8’, ‘8’]

print(re.findall('g\b',test_3))  #匹配一个单词边界
print(re.findall('g\B',test_3))  #匹配非单词边界。

[]
[‘g’, ‘g’, ‘g’, ‘g’, ‘g’, ‘g’]

print(re.findall('\n',test_3))  #\n, \t, 等。    匹配一个换行符。匹配一个制表符, 等
print(re.findall('\t',test_3))

[’\n’]
[]

正则表达式模式与模式常见示例相关推荐

  1. 一起学习正则表达式(四)常见的4种匹配模式

    转载请注明出处:https://blog.csdn.net/kong_gu_you_lan/article/details/119101667 本文出自 容华谢后的博客 往期回顾: <一起学习正 ...

  2. vim 底行命令模式的正则表达式(匹配模式)

    文章目录 一.vim 替换表达式的语法格式 二.vim 关于 range 的表达式 三.vim 关于 flags 的元字符 四.vim 关于数量的元字符 五.环视和固化分组 六.vim 替换表达式的示 ...

  3. 正则表达式教程之模式修正符

    之前我们给大家介绍了正则表达式中的定界符.原子和元字符,那么我们关于正则表达式教程的基本语法就剩下了正则表达式中的模式修正符.本节会向大家介绍模式修正符的概念.模式修正符的构成,以及结合实例的模式修正 ...

  4. 1. awk基础,awk介绍,awk基本语法,直接使用action,打印列,初识列和行,\$0、\$NF、NF,基础示例,begin模式,end模式

    文章目录 前言 awk介绍 awk基本语法 直接使用action 打印列 初识列和行 \$0.\$NF.NF 基础示例 初识模式(begin end) 总结 友情链接 前言 本小节是awk基础入门课程 ...

  5. K8s, Kafka事件溯源架构模式和用例示例

    随着当今快速变化的业务和技术格局,开发人员.数据科学家和IT运营部门正在共同构建具有新技术和动态架构的智能应用程序,因为它们具有灵活性,交付速度和可维护性.本文我将介绍有助于技术架构进化的技术:容器. ...

  6. java 正则表达式 非贪婪模式_详解正则表达式的贪婪模式与非贪婪模式

    什么是正则表达式的贪婪与非贪婪匹配 如:String str="abcaxc"; Patter p="ab*c"; 贪婪匹配:正则表达式一般趋向于最大长度匹配, ...

  7. java中正则全局匹配_JS中正则表达式全局匹配模式/g用法实例

    JS中正则表达式全局匹配模式 /g用法详解 本文章来详细介绍js中正则表达式的全局匹配模式 /g用法, var str = "123#abc"; var re = /abc/ig; ...

  8. 正则表达式是匹配模式,要么匹配字符,要么匹配位置

    正则表达式是匹配模式,要么匹配字符,要么匹配位置 正则表达式之所以强大,是因为它能实现模糊匹配 模糊匹配有两个方向上的匹配: ​ 横向模糊 ​ 纵向模糊 横向模糊 一个正则可匹配的字符串的长度不是固定 ...

  9. python与正则表达式(part3)--贪婪模式和非贪婪模式

    文章目录 贪婪模式和非贪婪模式 定义 贪婪模式转换为非贪婪模式 贪婪模式和非贪婪模式 定义 贪婪模式: 默认情况,在整个表达式匹配成功的前提下,尽可能多的匹配. 非贪婪模式(懒惰模式): 在整个表达式 ...

最新文章

  1. Github无法加载或不显示图片问题
  2. php将配置信息写入文件,Php写入配置文件的经典漏洞
  3. 安装QT5后运行提示libHelp.so无法加载
  4. Git删除分支/恢复分支
  5. java关闭文本_如何更优雅的关闭java文本、网络等资源
  6. 使用Spring Boot搭建HelloWorld Web页面(含HTTP协议分析)
  7. 离线抓取域登录缓存hash(mscash)
  8. 微软披露25个漏洞 BadAlloc,至少影响数十亿智能设备
  9. matlab toolbox 向量,mosek optimization toolbox for matlab提供的函数简介
  10. live555 分析—— OpenRtsp
  11. 算法:两个数之和为目标数Two Sum II - Input array is sorted
  12. SpringBoot 任务调度(开发总结)
  13. Java和python哪个好,学哪个有用。
  14. LDR6028充电OTG直播线直播声卡音频转接器最具性价比方案
  15. 单片机加减法C语言,如何利用51单片机实现加减法计算
  16. STN网络官方文档复现
  17. 实现webIM技术小结——websocket IM原理篇
  18. AI工具是帮手还是助手:
  19. 【LSSVM回归预测】基于matlab人工蜂群算法优化最小二乘支持向量机LSSVM数据回归预测【含Matlab源码 2213期】
  20. 选项模式(option)

热门文章

  1. 计算机英语学习v1.0,cake学英语电脑版
  2. 【微信小程序】Image图片加载(78/100)
  3. python使用osgeo库_无法导入osgeo和GDAL库
  4. STM32F1驱动AM2302温湿度传感器
  5. 微信小程序应用”腾讯位置服务路线规划“插件
  6. 计算机网络:局域网络设备
  7. 关于水晶报表中的一些报错解决方法
  8. OneAPM对tomcat监控——2020.10.21
  9. android gpu不工作6,Android 12抛弃了用于GPU计算任务的渲染脚本API
  10. 端到端视频编码:DVC