举例:

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. shell应用之习题一

    1 #!/bin/bash 2 #.写一个脚本/root/bin/argsnum.sh,接受一个文件路径作 为参数:如果参数个数小于1,则提示用户"至少应该给一个 参数",并立即退 ...

  2. MyBatis 项目开发中是基于 XML 还是注解?

    只要你对 MyBatis 有所认识和了解,想必知道 MyBatis 有两种 SQL 语句映射模式,一种是基于注解,一种是基于XML. 基于 XML <mapper namespace=" ...

  3. 1.5linux用户权限相关命令

    用户权限相关命令 目标 用户 和 权限 的基本概念 用户管理 终端命令 组管理 终端命令 修改权限 终端命令 01. 用户 和 权限 的基本概念 1.1 基本概念 用户 是 Linux 系统工作中重要 ...

  4. java命令的本质逻辑揭秘

    前言 在日常编码中,有了ide的支持,我们已经很少直接在命令行中直接执行java XXX命令去启动一个项目了.然而我们有没有想过,一个简单的java命令背后究竟做了些什么事情?让我们看下下面几个简单的 ...

  5. Guava Cache,Java本地内存缓存使用实践

    Guava Cache,网上介绍很多,我就不赘述了. 分享一篇好的文章: Guava Cache内存缓存使用实践-定时异步刷新及简单抽象封装 Google Guava 3-缓存 在原作者基础上,我做了 ...

  6. Python Xpath语法

    Python    Xpath语法   一.选取节点 常用的路劲表达式: 表达式 描述 实例   nodename 选取nodename节点的所有子节点 xpath('//div') 选取了div节点 ...

  7. 用NumPy genfromtxt导入数据

    用NumPy genfromtxt导入数据 NumPy provides several functions to create arrays from tabular data. We focus ...

  8. MindSpore特性支持类

    MindSpore特性支持类 Q:请问MindSpore支持梯度截断吗? A:支持,可以参考梯度截断的定义和使用. Q:如何在训练神经网络过程中对计算损失的超参数进行改变? A:暂时还未有这样的功能. ...

  9. CloudHub概述

    CloudHub概述 CloudHub CloudHub是cloudcore的一个模块,是Controller和Edge端之间的中转.它同时支持基于websocket的连接以及QUIC协议访问.Edg ...

  10. Python分析离散心率信号(上)

    Python分析离散心率信号(上) 一些理论和背景 心率包含许多有关信息.如果拥有心率传感器和一些数据,那么当然可以购买分析包或尝试一些可用的开源产品,但是并非所有产品都可以满足需求.也是这种情况.那 ...