regex_lst = [

  ('字符组',),

  ('非打印字符',),

  ('特殊字符',),

  ('定位符',),

  ('限定符',),

  ('re模块',),

  ('分组命名',),

  ('或匹配',),

  ('贪婪匹配与惰性匹配',),

]

字符组

  [0-9]

  [a-z]

  [A-Z]

  [^a]

非打印字符

  \w     匹配字母,数字,下划线  word

  \s      匹配空字符          space

  \d   匹配数字           digit

特殊字符

  .        匹配除换行符 \n 之外的任何单字符

定位符

  ^  匹配字符串的开始位置

  $    匹配字符串的结尾位置

限定符

  *      0次或多次

  +     1次或多次

  ?     0次或1次

  {n}   n次

  {n,}  n次或多次

  {n,m}    n次至m次

re模块

  re_lst = [

    ('re.compile(regex)',),

    ('re.findall(pattern, str)',),

    ('re.finditer(pattern, str)',),

    ('re.search(pattern, str)',),

  ]

re.compile(regex)

1 import re
2
3 """
4 re.compile(regex)
5     编译一个正则表达式模式,返回一个模式对象
6 """
7 regex = r'[a-z]'
8 pattern = re.compile(regex)

re.findall(pattern, str)

 1 import re
 2
 3 """
 4 re.findall(pattern, str)
 5     返回所有满足匹配条件的结果,并放到列表中
 6 """
 7 regex = r'[a-zA-Z]+'
 8 s = 'Hello Python'
 9 pattern = re.compile(regex)
10
11 lst = re.findall(pattern, s)
12 print(lst)    # ['Hello', 'Python']

re.finditer(pattern, str)

 1 import re
 2
 3 """
 4 re.finditer(pattern, str)
 5     返回迭代器
 6     迭代器中每一个元素需要调用group(),得到结果
 7 """
 8 regex = r'[a-zA-Z]+'
 9 s = 'Hello Python'
10 pattern = re.compile(regex)
11
12 iterator = re.finditer(pattern, s)
13
14 print(iterator)    # <callable_iterator object at 0x000001FDB3F29BE0>
15
16 for i in iterator:
17     print(i.group())

re.search(pattern, str)

 1 import re
 2
 3 """
 4 re.search(pattern, str)
 5     返回满足匹配条件的第一个结果对象
 6 """
 7 regex = r'[a-zA-Z]+'
 8 s = 'Hello Python'
 9 pattern = re.compile(regex)
10
11 obj = re.search(pattern, s)
12
13 if obj:
14     print(obj.group())

分组命名

 1 import re
 2
 3 """
 4 flags
 5     re.I    忽略大小写
 6     re.M    多行模式,改变^和$的行为
 7     re.S    .可以匹配任意字符,包括换行符
 8 """
 9 regex = r'<dd>.*?title="(?P<title>.*?)".*?</dd>'
10 s = '<dd><a href="#" title="Python中的正则">...</a></dd>'
11 pattern = re.compile(regex, re.S)
12
13 iterator = re.finditer(pattern, s)
14
15 for i in iterator:
16     print(i.group('title'))

或匹配

 1 import re
 2
 3 """
 4 取消分组
 5     (?:)
 6 或匹配
 7     long|short
 8 """
 9 regex = r'www.(?:page|hopen).com'
10 s = 'www.hopen.com'
11 pattern = re.compile(regex)
12
13 iterator = re.finditer(pattern, s)
14
15 for i in iterator:
16     print(i.group())

贪婪匹配与惰性匹配

 1 import re
 2
 3
 4 def get_data(regex, s):
 5     pattern = re.compile(regex)
 6     obj = re.search(pattern, s)
 7     if obj:
 8         return obj.group()
 9
10
11 # 贪婪匹配
12 regex_greedy = r'<.*>'
13 # 惰性匹配
14 regex_lazy = r'<.*?>'
15 content = '<a href="#">...</a>'
16
17 ret_1 = get_data(regex_greedy, content)
18 ret_2 = get_data(regex_lazy, content)
19 print(ret_1)    # <a href="">...</a>
20 print(ret_2)    # <a href="">

  

转载于:https://www.cnblogs.com/HopenZhang/p/9990309.html

Python中的正则相关推荐

  1. python中的正则匹配知识点

    @author: fighter Python正则表达式知识点整理. 概述:在处理字符串时,经常会遇到查找符合某些复杂规则字符串的需求,正则表达式就是用于描述这些规则的工具. 首先,我们先掌握一下py ...

  2. python中的正则替换字符串函数re.sub

    python re.sub属于python正则的标准库,主要是的功能是用正则匹配要替换的字符串 然后把它替换成自己想要的字符串的方法 re.sub 函数进行以正则表达式为基础的替换工作 下面是一段示例 ...

  3. python中使用正则模板匹配结果

    正则配置处理类文件 util_tool.py #!/usr/bin/env python# -*- coding: utf-8 -*-"""Util Module for ...

  4. Java与Python中的正则匹配

    Java实现 import java.util.regex.Matcher; import java.util.regex.Pattern;public class Test {public stat ...

  5. Python中的 正则匹配

    正则匹配的基本格式 import re ret=re.match("正则表达式","要匹配的字符串") ret.group( ) 提取数据 匹配单个字符: . ...

  6. python re subn_python中的正则re.sub re.subn

    这次给大家带来python中的正则re.sub & re.subn,使用python中正则re.sub & re.subn的注意事项有哪些,下面就是实战案例,一起来看一下. Pytho ...

  7. python中如何匹配正则中的空格

    自己亲测了几种,要想在python中匹配正则的话,一般得是如下的写法: pattern1 = (\s) pattern2 = [\s] 而我以前以为的 pattern3 = (' ') 或者: pat ...

  8. python中search和match的区别_Python中正则表达式match()、search()函数及match()和search()的区别详解...

    match()和search()都是python中的正则匹配函数,那这两个函数有何区别呢? match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找 ...

  9. python中match的六种用法,python 正则函数match()和search()用法示例

    这篇文章主要为大家详细介绍了python 正则函数match()和search()用法示例,具有一定的参考价值,可以用来参考一下. 对python正则表达式函数match()和search()的区别详 ...

最新文章

  1. mysql存储过程详解[转]
  2. Oracle 学习系列之一(表空间与表结构)
  3. Python3 定向爬虫之“抓取糗事百科图片”
  4. P4022-[CTSC2012]熟悉的文章【广义SAM,dp,单调队列】
  5. 无穷级数求和7个公式_大家看,用反证法判别级数敛散性(送微积分同学)!...
  6. 如何评价强gis与弱gis_什么是gis的简化解释
  7. OO_2019_第一单元总结——表达式求导
  8. 安装fitz报错_动态 - Fitz999的个人空间 - OSCHINA
  9. LeetCode 221. 最大正方形(动态规划)
  10. OpenCV(C++版)图像读取,创建,复制,保存,显示
  11. 《那些年啊,那些事——一个程序员的奋斗史》——53
  12. 17.异常(三)之 e.printStackTrace()介绍
  13. inux系统磁盘管理基础知识及总结
  14. paip.目录文件列表排序算法
  15. Lock接口和AQS原理与实现(Java并发编程的艺术整理)
  16. Windows 域之 LDAP与AD
  17. 2018.6清北学堂day3下午笔记
  18. 战矛在线Java_战矛在线职业选择攻略 最强职业推荐
  19. h5策划书_DIYH5|3.12世界睡眠日H5策划方案
  20. python程序设计论文_浅谈初中Python程序设计教学的实践与体会

热门文章

  1. 华为鸿蒙系统需要谷歌的服务器吗,华为P40或用鸿蒙系统?余承东:如果不能使用谷歌服务会考虑...
  2. java pashone_java – 如何使用onejar Maven插件在清单中设置附加的Class-Path条目?
  3. 没有java home_【Java安装】必须有JAVA_HOME变量吗
  4. 几何画板200个经典课件_几何画板Sketchpad Mac(数学教学软件)中文版
  5. postgresql存储过程输出参数
  6. python接口 同花顺_这是真的么 | 学会了用Python预测股票价格
  7. 杭州网络推广浅谈细节优化之栏目页如何优化?
  8. mysql从表中转移数据文件_MySQL 数据文件迁移找不到表
  9. python算法特征_python 3.x实现特征选择ReliefF算法
  10. 开发日记-20190618 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》