一,判断字符中是否包含指定的单词

a='C|C++|Json|Java|C#|Python|javascript'

print('Python' in a) #方式一

print(a.index('Pyghon')>-1) #方式二

re.findall('Python',a)  #方式三,前提要先引入 import re

二,提取字符中的数字

import re   #引入re模块

a='C0C++2C#3java8Python7javascirpt'

r=re.findall('\d',a)   #\d在正则中代表数字.

print(r)

注,同上实例,一例中'Python'为普通字符,二例中'\d'为元字符。

三,在字符中找到多个指定的单词

import re

a='abc,acc,adc,afc,aec,agc,ahc'   #在此字符中找出acc,afc

r=re.findall('a[cf]c',a) #普通字符a和c做为定界字符,c和f为元字符。此例中如果^a[cf]c作为正则,表示在字符a中找出除去acc 和afc的所有单词。再如果c到f为顺序的字符可写为[c-f]。

print(r)

四,概括字符集

import re   #引入re模块

a='C0C++2C#3java8Python7javascirpt'

r=re.findall('\d',a)   #\d在正则中代表数字.

print(r)

注,此例与例二同,但也可以使用例三的方式来打印出来

r=re.findall('[0-9]',a)  #如果想要打印出非数字的集合为:r=re.findall('[^0-9]',a)

print(r)

五,匹配所有数字和字母

import re

a='C0C++2C#3java8Python7javascirpt*&%$'

r=re.findall('\w',a)   #'\w'只能匹配也有数字和字母,但特殊字符#*$&%等是不可以匹配到的。如果用字符集来表示'\w'可以用'[A-Za-z0-9_]'表示.注下划线'_'是可以匹配到的。

print(r)

六,匹配特殊字符

import re

a='C0C++2C#3java8Python7javascirpt*&%$'

r=re.findall('\W',a)  #与例五不同,这里匹配特殊字符是使用大写的'\W'来表示。

print(r)

注,'\W'也可以匹配出空白字符集,如回车,换行等.

七,匹配空白字符集

import re

a='C0C++2C#3java8Python7javascirpt*&%$'

r=re.findall('\s',a)

print(r)

注,此处'\s'并没有匹配出特殊字符%&等,只匹配空白字符,回车换行等。

附加案例   # '.'点号匹配除换行符\n之外的其他所有字符

八,数量词(匹配一串字符中不同位数组成的单词)

import re

a='C0C++2C#3java8Python7javascirpt*&%$'    #注,字符集a中,能组成单词的有C,java,Python,javascirpt,但单词的位数不同

r=re.findall('[a-zA-Z]{1,9}',a)    #注,'[a-zA-Z]'为能组合的字母集,{1,9}为能组成单词的位数,从1到9。

print(r)

结果为C java Python javascript

注,数量词的匹配在Python中存在贪婪与非贪婪两种模式,本例'[a-z]{1,9}'为贪婪模式,在匹配过程中先以能通过的字母的最大数原则,如果是非贪婪模式‘[a-z]{3,9}?’注后有?号,输出的结果中,C是不会被输出的,而且java也会被分开打印,只打印出jav,而最后的a是不会被打印出的。只匹配三位,而且后面的就算有字母,但不够三位,也不会被打印出。

九,数量词匹配的限制

9.1)*星号匹配0次或者无限多次

import re

a='pytho0python1pythonn2'

r=re.findall('python*',a)   #'*'星号为匹配0次或者无限多次,以n匹配python。虽然第一个没有n,也可以表示为0次.

print(r)

结果为:pytho  python pythonn

9.2)+加号匹配一次或者无限多次

import re

a='pytho0python1pythonn2'

r=re.findall('python+',a)   # +加号表示以n结束匹配python出现一次或者无限多次

print(r)

结果为: python pythonn

9.3) ?问号匹配0次或者一次

import re

a='pytho0python1pythonn2'

r=re.findall('python?',a)     # ?问号表示以n匹配python出现0次或者一次

print(r)

结果为:pytho  python python

注,本例是的?号与上例的非贪婪不同,上例有{1,9}的限位。

9.4)指定数次匹配

import re

a='pytho0python1pythonn2'

r=re.findall('python{2}',a)      #指定2次

print(r)

结果为: pythonn

十,边界匹配

import re

qq= 10000001

r=re.findall('^000$',qq)    #^号表示字符串必须以000为开始,$号表示字符串必须以000为结尾。

print(r)

结果为[]空

十一,组匹配 (以组的形式为匹配)

import re

a='pyhtonpythonpythonpythonpython

r=re.findall('(python){3}',a)      #注在例9.4中,pyhton没有加()括号,表示以n为结束匹配,本例加()括号表示以python为结束来匹配,

print(r)

结果为:pyhton

注,正则内()括号为且的关系,[]中括号为或的关系.

十二,正则的第三个参数    模式

import re

lanuage='PyhthonC#JavaScript'

r=re.findall('c#',lanuage,re.I)  #正则表达式的第三个参数称为模式如:re.I(忽略大小写),当多个模式一齐存在时用'|'竖线连接如:re.I|re.s    re.s为改为.点号的规则(七案例下,附加案例)

print(r)

转载于:https://www.cnblogs.com/tngh/p/9315298.html

Pyhton入门 笔记 第三天 正则表达式与JSON相关推荐

  1. python语言支持函数式编程_Python语言之Pyhton入门笔记函数式编程

    本文主要向大家介绍了Python语言之Pyhton入门笔记函数式编程,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 一,匿名函数 def add(x,y) return x+y ...

  2. ROS入门笔记(三):二进制包与源代码包

    ROS入门笔记(三):二进制包与源代码包 文章目录 1 软件包分类 2 二进制包与源代码包的区别 3 ROS二进制包的安装 4 适配ROS的IDE 注意: 如果你是使用类似apt这样的软件管理器来安装 ...

  3. 机器学习入门笔记(三):K近邻算法

    文章目录 一.K近邻算法的基本概念 1.1 K近邻算法实现 二.K近邻分类三要素 2.1 距离度量 2.2 K值的选择 2.2.1 基于m-fold cross validation的 K值选择 2. ...

  4. 深度学习入门笔记(三):求导和计算图

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  5. Python爬虫学习笔记(三)——正则表达式

    介绍 正则表达式是一种处理字符串的强大工具,能实现字符串的检索.替换.匹配验证等.在爬虫中,正则表达式主要用于从HTML里提取所需要的信息 常用的匹配规则 模式 描述 \w 匹配字母.数字及下划线 \ ...

  6. vue入门笔记(三)

    Vue Day 03 文章目录 Vue Day 03 一.v-model的使用(表单绑定) 1.1.v-model的基本使用 1.2.v-model的原理 1.3.v-model结合radio的类型使 ...

  7. Python入门 - 笔记 - 第三章 Python中的变量和数据类型

    第三章 Python中的变量和数据类型 -------------------------------------------------------------------------------- ...

  8. photoshop2020入门笔记(三)——磨皮

    一.通道磨皮 思路:借助通道计算功能,计算斑点纹理,将其选中,进行磨皮 1.打开图片后,打开右边菜单栏中的通道栏,选择蓝通道(红绿蓝三通道中最明显的一个),进行复制,形成拷贝 2.点击上方菜单栏中的滤 ...

  9. 小甲鱼python入门笔记(三)

    目录 十三.函数 4.作用域 (1)局部作用域 (2)全局作用域 (3)global语句 (4)嵌套函数 (5)nonlocal语句 (6)LEGB规则 5.闭包 6.装饰器 7.lambda表达式 ...

最新文章

  1. 云炬Android开发报错处理教程 Gradle下载超时please configure the proxy settings either in IDE or Gradle
  2. spring-注入集合对象
  3. org.springframework.jdbc.core.JdbcTemplate 无法import原因分析
  4. 从Windows上用SSH链接接入Ubuntu
  5. windows搭建python开发环境方法_04 Windows下搭建 Python 开发环境 - Python 入门教程
  6. iOS即时通讯输入框随字数自适应高度
  7. 从零开始刷Leetcode——数组(448.485.509)
  8. 关于CF平台中基础服务的监控方案
  9. 智能算法---模拟退火搜索函数最小值
  10. SAP财务管理大全-采购收货-标准成本法 移动平均价
  11. %appdata% 代表什么?
  12. TBS1237 1/4 扫 48 通道 LED 背光驱动芯片
  13. Java编程到底是用idea好还是eclipse好?
  14. S5P4418裸机开发(六):串口初试,简单回显(轮询模式)
  15. DirectX12(D3D12)基础教程(十七)——让小姐姐翩翩起舞(3D骨骼动画渲染【1】)
  16. 选中Checkbox,则向数组中增加其所属条目的某个属性值,取消选中,则删除。
  17. CAD碎片化学习教程 @4. 按比例放大或缩小图形尺寸
  18. OSChina 周一乱弹 —— 为什么人类和人工智能定要一战
  19. c语言报告对老师的致谢,论文对老师的致谢
  20. linux-文件系统管理10-关于存储介质的那些事儿

热门文章

  1. vue 原型设计 拖拽_设计即开发,如何打通软件研发的“任督二脉”?
  2. java 代码里设置环境变量_如何在一个java程序里设置环境变量
  3. java transient 应用场景_关于java:transient关键字的用途是什么以及何时使用它?...
  4. Spring 创建Bean的三种方式
  5. TensorFlow DCNN
  6. Python 绘图 Matplotlib 快速参考手册
  7. virtualbox 安装kali linux虚拟机,kali Linux安装virtualbox虚拟机之爬坑经历
  8. 什么是好的虚拟化项目交付(转)
  9. 生产环境的分布式任务调度框架如何选择?quartz、xxl-job、Elastic-Job、Saturn
  10. Java Web学习总结(39)——JavaEE常用的Jar详解