举例:

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. 存储单位 KB MB bit

  2. Synchronize 和 volatile 的区别

    1. 在应用层面来讲 a. volatile是线程同步的轻量级实现,所以volatile的性能要比synchronize好: volatile只能用于修饰变量,synchronize可以用于修饰方法. ...

  3. WEB页面下载内容导出excel

    internal class DownloadHandler : IDownloadHandler    {        public DownloadHandler()        {      ...

  4. GO文件读写01---读文件

    打开文件 package main import ( "fmt" "os" ) /* buffer 缓冲区 utility 便利的工具 util 便捷工具(傻瓜 ...

  5. 2021.5.23 noip模拟2(排序|划艇|放棋子)

    今天比昨天更惨,惨炸了 看到T1不会,跳!!! T2不会,再跳!!!! T3不会,后面没题了:::: 无奈无奈,重新看T1,然鹅时间已经过去了一个小时 然而我一想不出题来就抱着水瓶子喝水,然后跑厕所, ...

  6. 大型图像数据聚类匹配:ICCV2019论文解析

    大型图像数据聚类匹配:ICCV2019论文解析 Jointly Aligning Millions of Images with Deep Penalised Reconstruction Conge ...

  7. Paddle Lite端侧部署

    Paddle Lite端侧部署 端侧推理引擎的由来 随着深度学习的快速发展.特别是小型网络模型的不断成熟,原本应用到云端的深度学习推理,就可以放到终端上来做,比如手机.手表.摄像头.传感器.音响,也就 ...

  8. ES6中的新数据类型——Symbol

    今天小编和大家来聊一聊es6中新增的一个原始数据类型Symbol.在es5中原始数据类型(基本数据类型)有以下六种:Undefind.Null.Bool. String.Number.Object.今 ...

  9. Spring Boot WebFlux-10——WebFlux 实战图书管理系统

    前言 本篇内容我们会实现如下图所示的城市管理系统,因为上面案例都用的是 City,所以这里直接使用城市作为对象,写一个简单的城市管理系统,如图所示: 结构 类似上面讲的工程搭建,新建一个工程编写此案例 ...

  10. noip2010 总结

    机器翻译 题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词 ...