import re
#匹配以chinahadoop开头的字符串
result = re.match("chinahadoop","chinahadoop.cn")
#打印匹配出来的内容
print(result.group())
#运行结果:chinahadoop

字符 描述
. 匹配除“\n”之外的任意单个字符
\d 匹配0到9之间的一个数字,等价于[0-9]
\D 匹配一个非数字字符,等价于[^0-9]
\s 匹配任意空白字符,如空格、制表符“\t”、换行“\n”等
\S 匹配任意非空白字符
\w 匹配任意字母或者数字或下划线,如a-z,A-Z,0-9,
\W 匹配任意非单词字符,等价于[^ a-zA-Z0-9
]
[ ] 匹配[ ]中列举的字符
^ 取反

import re
# . 匹配除“\n”之外的任意单个字符
rs = re.match(".","1")
print(rs.group())
rs = re.match(".","a")
print(rs.group())
rs = re.match(".","abc")  #只匹配单个字符
print(rs.group())
rs = re.match("...","abc")  #用3个点匹配3个字符
print(rs.group())

运行结果:
1
a
a
abc

示例:\w匹配单词字符(包括 _ )
rs = re.match("\w","a")
print(rs.group())
rs = re.match("\w","A")
print(rs.group())
rs = re.match("\w","1")
print(rs.group())
rs = re.match("\w","_")
print(rs.group())
rs = re.match("\w","*") #将不会匹配*,返回none
print(type(rs))

运行结果:

a
A
1
_
<class ‘NoneType’>

示例:匹配[ ]中列举的字符,列举的字符之间相当于是或的关系
#匹配以h或者H开头的字符串
rs = re.match("[Hh]", "hello")
print(rs.group())
# 匹配0到9任意一个数字方法一
rs = re.match("[0123456789]", "3")
print(rs.group())
# 匹配0到9任意一个数字方法二
rs = re.match("[0-9]", "3")
print(rs.group())

运行结果:
h
3
3

在使用正则表达式的过程中,不可能只针对单个字符匹配,很多时候要对多次出现的字符进行匹配,下面介绍正则表达式的数量表示方法。

字符 描述
* 一个字符可以出现任意次,也可以一次都不出现
+ 一个字符至少出现一次
? 一个字符至多出现一次
{m} 一个字符出现m次
{m,} 一个字符至少出现m次
{m,n} 一个字符出现m到n次
示例:“*”一个字符可以出现任意次,也可以一次都不出现

rs = re.match("1\d*","1234abc")#匹配以1开头,后边是任意多个数字,数字有其他字符,也只匹配数字
print(rs.group())

运行结果:

1234
示例:"+"一个字符至少出现一次

#字符开头至少出现一个数字

rs = re.match("\d+","1abc") #开头只出现1个数字,符合规则
print(rs.group())
rs = re.match("\d+","123abc") #开头出现多个数字,符合规则
print(rs.group())

运行结果:

1
123
示例:“?”一个字符至多出现一次

#匹配开头出现一次的数字字符

rs = re.match("\d?","1abc")
print(rs.group())
#开头数字至多出现一次
rs = re.match("\d?","123abc")  #在1之后的所有数字字符都不会匹配上
print(rs.group())

运行结果:

1
1
示例:{m} 出现m次

rs = re.match("\d{3}","123abc")  #要连续出现3次数字
print(rs.group())
#要连续出现4次数字,字符串中只出现了3次,与规则不匹配
rs = re.match("\d{4}","123abc")
print(type(rs))

运行结果:

123
<class ‘NoneType’>
示例:{m,} 至少出现m次

rs = re.match("\d{0,}","123abc")  #等价于*,0次或者多次
print(rs.group())
rs = re.match("\d{1,}","123abc")  #等价于+,至少出现一次
print(rs.group())
rs = re.match("\d{0,1}","123abc") #等价于?,至多1次,0次或者1次
print(rs.group())

运行结果:

123
123
1
综合练习:匹配一个手机号

手机号一共11位,第1位是1,第2位是3、5、7、8,第3位到第11位是0-9的数字

代码实现:

rs = re.match("1[3578]\d{9}","13612345678") #匹配成功
print(rs.group())
#用一个错误的手机号测试
rs = re.match("1[3578]\d{9}","14612345678") #匹配失败,第2位没有出现3、5、7、8
print(type(rs))
#11位电话号码+字符测试
rs = re.match("1[3578]\d{9}","13612345678abc")
print(rs.group())
#没有限制边界,也会认为是合法的手机号,后续的“边界表示”课时会介绍如何限定正则表达式的开始和结束边界

运行结果:

13612345678
<class ‘NoneType’>
13612345678

re.match()正则表达式相关推荐

  1. python compile正则_Python 正则表达式:compile,match

    本文以匹配×××ID为例,介绍re模块的compile与match的用法 复杂匹配 = re.compile(正则表达式): 将正则表达式实例化 + re.match(要匹配的字符串): 从字符串开 ...

  2. Python 正则表达式各种特殊符号 重点

    Python 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. r ...

  3. 正则表达式re模块使用介绍

    1. re模块的介绍 在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个 re 模块 # 导入re模块 import re# 使用match方法进行匹配操作 result = re ...

  4. javascript:正则表达式、一个表单验证的例子

    阅读目录 本文内容: 正则表达式: 利用正则表达式进行表单验证的例子: 回到顶部 本文内容: 正则表达式 正则表达式的使用方法 正则表达式的特殊匹配字符 正则表达式修饰符 利用正则表达式进行表单验证的 ...

  5. 正则表达式--python的re模块

    1. re模块的使用过程 re.match(pattern, string, flags=0) 从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None patt ...

  6. Python程序开发——第十章 正则表达式(ヾ(•ω•`)o那么复杂的正则表达式看完这一篇就懂啦)

    目录 一.正则表达式的定义 二.元字符 三.预定义字符 四.re模块 (一)match()函数 (二)search()函数 (三)匹配对象 1.Match对象 2.匹配对象 (四)compile()函 ...

  7. python中正则表达式的使用

    1.导入re模块 import re#使用match方法进行匹配操作 result = re.match(正则表达式, 匹配的字符串) # 若字符串符合规则,返回值为一个match对象,若不匹配则返回 ...

  8. python正则表达式怎么用_Python如何使用正则表达式

    1. Python与正则表达式 开始查看python当前如何通过使用re模式来支持正则表达式,re模式在古老的Python1.5版本中引入,用于替换哪些已经过时的regex模块和regsub模块--- ...

  9. 正则表达式 之 python3

    re模块操作 在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个模块,名字为re re模块的使用过程 import re # 导入re模块result = re.match(正则表 ...

最新文章

  1. 理解离散傅立叶变换(一)
  2. Gson解析JSON数据中动态未知字段key的方法
  3. 12款顶级SIEM工具比较与评级
  4. 【FFmpeg】FFmpeg 相关术语简介 ( 容器 | 媒体流 | 数据帧 | 数据包 | 编解码器 | 复用 | 解复用 )
  5. asp php时间格式,ASP_asp格式化日期时间格式的代码,' ====================================== - phpStudy...
  6. Java 动态代理实践AOP
  7. mongo的php查询,如何在php中查询mongo?
  8. Hibernate中的JPA 2.1条件删除/更新和临时表
  9. web前端【第十一篇】jQuery属性相关操作
  10. CSS基础必备知识点01
  11. 使用TensorFlow.js的AI聊天机器人一:检测文本中的情绪
  12. 散列函数之双重散列算法解决冲突问题
  13. android 高德地图动画,点动态样式-基本功能-示例中心-Loca API 示例 | 高德地图API...
  14. 基于STM32的自由度云台运动姿态控制系统
  15. python 量化投资 长期横盘_python量化投资才是最正确的方式,只教方法,不股荐!...
  16. 联想微型计算机2010年,2010年10月自考02277微型计算机原理及应用真题及答案
  17. 仿系统闹钟,实现更新安装之后还可以响铃,开机启动功能需要手机自带开机自启动
  18. html5微信录音文件,微信H5录音实现
  19. 语音芯片c语言程序,语音芯片pm50 在430单片机上的C语言编程
  20. hbase常见问题及解决方案总结(一)

热门文章

  1. 数据匿名化的几种技术手段
  2. Android UI 阿里VLayout使用
  3. NASA全球与全国12.5米高程覆盖率统计与订正说明
  4. 解决问题:javax.mail.MessagingException: Could not connect to SMTP host: smtp.exmail.qq.com, port: 25;
  5. 2021前端学习路线
  6. Android几种解析XML方式的比较
  7. 2022-2023 科学道德与学风建设(chao星) 自我学习记录日志四(8-10)
  8. 小米电视注册显示访问服务器失败,为什么手机看电视连接上却出现服务器连接异常 – 手机爱问...
  9. java 两字符串相同,关于java:使用==比较两个相同的字符串将返回false
  10. springboot毕设项目仓库管理oni4h(java+VUE+Mybatis+Maven+Mysql)