表示字符

示例1: .

#coding=utf-8

    import re

    ret = re.match(".","a")
ret.group() ret = re.match(".","b")
ret.group() ret = re.match(".","M")
ret.group()

示例2:[ ]

#coding=utf-8

    import re

    # 如果hello的首字符小写,那么正则表达式需要小写的h
ret = re.match("h","hello Python")
ret.group() # 如果hello的首字符大写,那么正则表达式需要大写的H
ret = re.match("H","Hello Python")
ret.group() # 大小写h都可以的情况
ret = re.match("[hH]","hello Python")
ret.group()
ret = re.match("[hH]","Hello Python")
ret.group() # 匹配0到9第一种写法
ret = re.match("[0123456789]","7Hello Python")
ret.group() # 匹配0到9第二种写法
ret = re.match("[0-9]","7Hello Python")
ret.group()

示例3:\d

#coding=utf-8

    import re

    # 普通的匹配方式
ret = re.match("嫦娥1号","嫦娥1号发射成功")
print ret.group() ret = re.match("嫦娥2号","嫦娥2号发射成功")
print ret.group() ret = re.match("嫦娥3号","嫦娥3号发射成功")
print ret.group() # 使用\d进行匹配
ret = re.match("嫦娥\d号","嫦娥1号发射成功")
print ret.group() ret = re.match("嫦娥\d号","嫦娥2号发射成功")
print ret.group() ret = re.match("嫦娥\d号","嫦娥3号发射成功")
print ret.group()

原始字符串

>>> mm = "c:\\a\\b\\c"
>>> mm
'c:\\a\\b\\c'
>>> print(mm)
c:\a\b\c
>>> print(mm)
c:\a\b\c
>>> re.match("c:\\\\",mm).group()
'c:\\'
>>> ret = re.match("c:\\\\",mm).group()
>>> print(ret)
c:\
>>> ret = re.match("c:\\\\a",mm).group()
>>> print(ret)
c:\a
>>> ret = re.match(r"c:\\a",mm).group()
>>> print(ret)
c:\a
>>> ret = re.match(r"c:\a",mm).group()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
>>>

说明

Python中字符串前面加上 r 表示原生字符串

与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。

Python里的原生字符串很好地解决了这个问题,有了原始字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。

>>> ret = re.match(r"c:\\a",mm).group()
>>> print(ret)
c:\a

表示数量

匹配多个字符的相关格式

示例1:*

需求:匹配出,一个字符串第一个字母为大小字符,后面都是小写字母并且这些小写字母可有可无

#coding=utf-8
import re ret = re.match("[A-Z][a-z]*","Mm")
ret.group() ret = re.match("[A-Z][a-z]*","Aabcdef")
ret.group()

示例2:+

需求:匹配出,变量名是否有效

#coding=utf-8
import re ret = re.match("[a-zA-Z_]+[\w_]*","name1")
ret.group() ret = re.match("[a-zA-Z_]+[\w_]*","_name")
ret.group() ret = re.match("[a-zA-Z_]+[\w_]*","2_name")
ret.group()

示例3:?

需求:匹配出,0到99之间的数字

#coding=utf-8
import re ret = re.match("[1-9]?[0-9]","")
ret.group() ret = re.match("[1-9]?[0-9]","")
ret.group() ret = re.match("[1-9]?[0-9]","")
ret.group()

示例4:{m}

需求:匹配出,8到20位的密码,可以是大小写英文字母、数字、下划线

#coding=utf-8
import re ret = re.match("[a-zA-Z0-9_]{6}","12a3g45678")
ret.group() ret = re.match("[a-zA-Z0-9_]{8,20}","1ad12f23s34455ff66")
ret.group()

python正则表达式(二)的更多相关文章

  1. python正则表达式二[转]

    原文:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一 ...

  2. python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL

    python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...

  3. Python正则表达式初识(二)

    前几天给大家分享了Python正则表达式初识(一),介绍了正则表达式中的三个特殊字符“^”.“.”和“*”,感兴趣的伙伴可以戳进去看看,今天小编继续给大家分享Python正则表达式相关特殊字符知识点. ...

  4. Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...

  5. python正则表达式 小例几则

    会用到的语法 正则字符 释义 举例 + 前面元素至少出现一次 ab+:ab.abbbb 等 * 前面元素出现0次或多次 ab*:a.ab.abb 等 ? 匹配前面的一次或0次 Ab?: A.Ab 等 ...

  6. Python 正则表达式-OK

    Python正则表达式入门 一. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分. 正则表达式是用于处理字符串的强大工具, 拥有自己独特的语法以及一个独立的处理引擎, 效率上 ...

  7. Python正则表达式一

    推荐 http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html#!comments 这篇博客超好,建议收藏. 不过对于正则表达式小白,他没 ...

  8. python 正则表达式汇总

    一. 正则表达式基础 1.1.概念介绍 正则表达式是用于处理字符串的强大工具,它并不是Python的一部分. 其他编程语言中也有正则表达式的概念,区别只在于不同的编程语言实现支持的语法数量不同. 它拥 ...

  9. 一篇搞定Python正则表达式

    1. 正则表达式语法 1.1 字符与字符类 1 特殊字符:\.^$?+*{}[]()| 以上特殊字符要想使用字面值,必须使用\进行转义 2 字符类    1. 包含在[]中的一个或者多个字符被称为字符 ...

  10. Python正则表达式很难?一篇文章搞定他,不是我吹!

    1. 正则表达式语法 1.1 字符与字符类 1 特殊字符:.^$?+*{}| 以上特殊字符要想使用字面值,必须使用进行转义 2 字符类 1. 包含在[]中的一个或者多个字符被称为字符类,字符类在匹配时 ...

随机推荐

  1. hdfs数据到hbase过程

    需求:将HDFS上的文件中的数据导入到hbase中 实现上面的需求也有两种办法,一种是自定义mr,一种是使用hbase提供好的import工具 一.hdfs中的数据是这样的 hbase创建好表 cre ...

  2. 查看CPU 内存 硬盘 网络 查看进程使用的文件 uptime top ps -aux vmstat iostat iotop nload iptraf nethogs

    #安装命令 yum install  sysstat #包含 iostat vmstat yum install iotop yum install  nload yum install iptraf ...

  3. Mac Mojave(10.14.1)执行Matlab的mex报错

    先装了matlab2018b,发现很频繁的crash,同时考虑到要跑的代码在>=2017a时就计算错误,于是转战matlab2016b matlab2016b安装后,执行mex -setup报错 ...

  4. 使用newtonjson解决Json日期格式问题

    继承 JsonResult 方式 使用Json.Net代替最简单的方法就是使用下面的JsonNetResult 来作为 ActionResult 返回. 1) Install-Package newt ...

  5. Windows配置Apache服务器

    下载的Apache版本:httpd-2.4.32-o102n-x64-vc14 简单粗暴式配置: 1.打开\conf\httpd.conf修改第60行和第224行,其中8081是电脑上没有被使用的端口 ...

  6. Processing3 1.随机行走

    class Walker { int x; int y; Walker() { x = width/2; y = height/2; } void display() { stroke(0); poi ...

  7. [转] js实现对图片的二进制流md5计算

    //计算图片md5 function img_MD5(img_path,callback) { plus.io.resolveLocalFileSystemURL(img_path, function ...

  8. thinkphp调用微信jssdk开发

    一:准备文件,并将文件置于网站根目录下 access_token.json {"access_token":"","expire_time" ...

  9. 10本Java架构师必读书籍

    1.大型网站系统与JAVA中间件实践 本书围绕大型网站和支撑大型网站架构的Java中间件的实践展开介绍. 从分布式系统的知识切入,让读者对分布式系统有基本的了解:然后介绍大型网站随着数据量.访问量增长 ...

  10. [转]MyEclipse 2015优化技巧

    http://www.chinahadoop.cn/group/16/thread/1660 http://www.bkjia.com/Javabc/1077158.html 只有不断的学习才能使人充 ...