举例:

1.匹配hello world

key = r"<h1>hello world<h1>" #源文本
p1 = r"<h1>.+<h1>" #正则表达式
pattern1 = re.compile(p1)
print pattern1.findall(key) #findall返回的是所有符合要求的元素列表,如果只有一个元素时,它还是返回列表。

2.匹配@与.之间的ygomi

key='aaaapiaoyu.qiu@ygomi.com.cn'
>>> p1=r"@.+\."
>>> pattern1=re.compile(p1
>>> pattern1.findall(key)
['@ygomi.com.']    #结果匹配到了更多的内容
>>> 
>>> p1=r"@.+?\."    #增加?
>>> pattern1=re.compile(p1)
>>> pattern1.findall(key)
['@ygomi.']    #匹配成功
原因是正则表达式默认是“贪婪”的,“+”代表是字符重复一次或多次,在我们没有细说这个多次到底是多少次时,它会尽可能“贪婪”地多给我们匹配字符,即匹配到最后一个“.”。怎么解决这种问题呢?只要在“+”后面加一个“?”就可以将贪婪的“+”改成了懒惰的“+”。

3.准确控制控制重复次数:{a,b} 其中,a<=匹配次数<=b

举栗,我们有sas,saas,saaas,我们想要sas和saas
key = r"saas and sas and saaas"
p1 = r"sa{1,2}s"
pattern1 = re.compile(p1)
print pattern1.findall(key)
输出:['saas', 'sas']
 
如果你省略掉{1,2}中的2,那么就代表至少匹配一次,那么就等价于?。如果你省略掉{1,2}中的1,那么就代表至多匹配2次。

正则表达式里的元字符及其作用:

元字符
说明
.
代表任意字符,用于匹配除换行符(\n)之外的所有字符。
|
逻辑或操作符,例如:A|B用于匹配A或B
[ ]
匹配内部的任一字符或子表达式
[0-9] 0123456789任意之一
[a-z]   小写字母任意之一
[A-Z]   大写字母任意之一
[^]
'[]'用于标示一组字符,如果^是第一个字符,则标示的是一个补集。
比如[0-9]表示所有的数字,[^0-9]表示除了数字外的字符。
-
定义一个区间
\
对下一字符取非(通常是普通变特殊,特殊变普通)
*
匹配前面的字符或者子表达式0次或多次(贪婪模式,即尽可能多的匹配)
*?
惰性匹配上一个(非贪婪模式)
+
匹配前一个字符或子表达式一次或多次(贪婪模式)
+?
惰性匹配上一个(非贪婪模式)
?
匹配前一个字符或子表达式0次或1次重复(贪婪模式)
{n}
匹配前一个字符或子表达式
{m,n}
匹配前一个字符或子表达式至少m次至多n次
{n,}
匹配前一个字符或者子表达式至少n次
{n,}?
前一个的惰性匹配
^
匹配字符串的开头
\A
匹配字符串开头
$
匹配字符串的末尾(末尾如果有换行符\n,就匹配\n前面的那个字符)
[\b]
退格字符
\c
匹配一个控制字符
\d
匹配任意数字,等同于[0-9]
\D
匹配数字以外的字符,等同于[^0-9]匹配非数字
\t
匹配制表符
\w
匹配任意数字字母下划线,,,等同于[a-z0-9A-Z_]匹配大小写字母、数字和下划线
\W
不匹配数字字母下划线,,,等同于[^a-z0-9A-Z_]等同于上一条取非
 

python 正则表达式 初级的更多相关文章

  1. Python 正则表达式入门(初级篇)

    Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. 转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达 ...

  2. 转载 Python 正则表达式入门(初级篇)

    Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写.转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式 ...

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

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

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

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

  5. python正则表达式入门篇

    文章来源于:https://www.cnblogs.com/chuxiuhong/p/5885073.html Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. ...

  6. Python正则表达式中的re.S

    title: Python正则表达式中的re.S date: 2014-12-21 09:55:54 categories: [Python] tags: [正则表达式,python] --- 在Py ...

  7. python正则表达式re

    Python正则表达式: re 正则表达式的元字符有. ^ $ * ? { [ ] | ( ).表示任意字符[]用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可 ...

  8. Python正则表达式详解

    我用双手成就你的梦想 python正则表达式 ^ 匹配开始 $ 匹配行尾 . 匹配出换行符以外的任何单个字符,使用-m选项允许其匹配换行符也是如此 [...] 匹配括号内任何当个字符(也有或的意思) ...

  9. 比较详细Python正则表达式操作指南(re使用)

    比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...

随机推荐

  1. 10.9 ping:测试主机之间网络的连通性

    ping命令 可用于测试主机之间网络的连通性.执行ping命令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而可得知该主机运作正常.     ping命令 ...

  2. 常见判断错误 (Day_30)

    写给自己的话: 这是一个卡了我小半天的BUG,也是一个很低端的BUG,写篇博客吧,以后回来看看,会发现曾经的自己是如何的菜. 同样,以此记录我的进步 步入正题,这是我实现多条件分页时遇到的一个BUG, ...

  3. mysql数据库-备份与还原-Percona XtraBackup 2.4备份工具使用

    目录 xtrabackup 特点 备份生成的相关文件 xtrabackup 安装 xtrabackup 用法 1 备份 2 预备份 3 还原 4 其他 还原注意事项 xtrabackup实现完全备份及 ...

  4. Python判断身份证是否合法

    利用正则表达式实现对身份证合法程度的判断 1 # !usr/bin/env python3 2 # coding:utf-8 3 """ 4 @ Copyright (c ...

  5. QCon笔记~《天下武功,唯快不破——面向云原生应用的Java冷启动加速技术》

    上周去听了QCon全球开发大会,其中有几场印象比较深刻的分享,除去几个比较概念化的话题,在Java技术演进这个Topic里的几个分享都是比较有干货的(但感觉工作中用不到) 首先是关于林子熠老师分享的冷 ...

  6. GO学习-(2) 从零开始搭建Go语言开发环境

    从零开始搭建Go语言开发环境 一步一步,从零搭建Go语言开发环境. 安装Go语言及搭建Go语言开发环境 下载 下载地址 Go官网下载地址:https://golang.org/dl/ Go官方镜像站( ...

  7. typeof的作用及用法

    typeof的作用及用法 1.检查一个变量是否存在,是否有值. typeof在两种情况下会返回"undefined":一个变量没有被声明的时候,和一个变量的值是undefined的 ...

  8. 3D Cube计算引擎加速运算

    3D Cube计算引擎加速运算 华为达芬奇架构的AI芯片Ascend910,同时与之配套的新一代AI开源计算框架MindSpore. 为什么要做达芬奇架构? AI将作为一项通用技术极大地提高生产力,改 ...

  9. 简化可视SLAM应用程序的开发

    简化可视SLAM应用程序的开发 Easing the development of visual SLAM applications 同步定位和映射(SLAM)描述了一个设备(如机器人)使用传感器数据 ...

  10. 2、java数据结构和算法:单链表: 反转,逆序打印, 合并二个有序链表,获取倒数第n个节点, 链表的有序插入

    什么也不说, 直接上代码: 功能点有: 1, 获取尾结点 2, 添加(添加节点到链表的最后面) 3, 添加(根据节点的no(排名)的大小, 有序添加) 4, 单向链表的 遍历 5, 链表的长度 6, ...