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)

 import re

 """
re.compile(regex)
编译一个正则表达式模式,返回一个模式对象
"""
regex = r'[a-z]'
pattern = re.compile(regex)

re.findall(pattern, str)

 import re

 """
re.findall(pattern, str)
返回所有满足匹配条件的结果,并放到列表中
"""
regex = r'[a-zA-Z]+'
s = 'Hello Python'
pattern = re.compile(regex) lst = re.findall(pattern, s)
print(lst) # ['Hello', 'Python']

re.finditer(pattern, str)

 import re

 """
re.finditer(pattern, str)
返回迭代器
迭代器中每一个元素需要调用group(),得到结果
"""
regex = r'[a-zA-Z]+'
s = 'Hello Python'
pattern = re.compile(regex) iterator = re.finditer(pattern, s) print(iterator) # <callable_iterator object at 0x000001FDB3F29BE0> for i in iterator:
print(i.group())

re.search(pattern, str)

 import re

 """
re.search(pattern, str)
返回满足匹配条件的第一个结果对象
"""
regex = r'[a-zA-Z]+'
s = 'Hello Python'
pattern = re.compile(regex) obj = re.search(pattern, s) if obj:
print(obj.group())

分组命名

 import re

 """
flags
re.I 忽略大小写
re.M 多行模式,改变^和$的行为
re.S .可以匹配任意字符,包括换行符
"""
regex = r'<dd>.*?title="(?P<title>.*?)".*?</dd>'
s = '<dd><a href="#" title="Python中的正则">...</a></dd>'
pattern = re.compile(regex, re.S) iterator = re.finditer(pattern, s) for i in iterator:
print(i.group('title'))

或匹配

 import re

 """
取消分组
(?:)
或匹配
long|short
"""
regex = r'www.(?:page|hopen).com'
s = 'www.hopen.com'
pattern = re.compile(regex) iterator = re.finditer(pattern, s) for i in iterator:
print(i.group())

贪婪匹配与惰性匹配

 import re

 def get_data(regex, s):
pattern = re.compile(regex)
obj = re.search(pattern, s)
if obj:
return obj.group() # 贪婪匹配
regex_greedy = r'<.*>'
# 惰性匹配
regex_lazy = r'<.*?>'
content = '<a href="#">...</a>' ret_1 = get_data(regex_greedy, content)
ret_2 = get_data(regex_lazy, content)
print(ret_1) # <a href="">...</a>
print(ret_2) # <a href="">

  

Python中的正则的更多相关文章

  1. 【归纳】正则表达式及Python中的正则库

    正则表达式 正则表达式30分钟入门教程 runoob正则式教程 正则表达式练习题集(附答案) 元字符\b代表单词的分界处,在英文中指空格,标点符号或换行 例子:\bhi\b可以用来匹配hi这个单词,且 ...

  2. python 爬虫之 正则的一些小例子

    什么是正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是 事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符”,这个“规则字符” 来表达对字符的一种过滤逻辑. 正则并不是pyth ...

  3. js中正则表达式与Python中正则表达式的区别

    今天女票让我帮她写一个js中的正则,来提取电话号码,对于正则规则来说,js与python是基本没有区别的,重点的区别是在一些函数与方法中. python中的正则提取: import re str = ...

  4. Python模块(三)(正则,re,模块与包)

    1. 正则表达式 匹配字符串 元字符 .   除了换行 \w  数字, 字母, 下划线 \d  数字 \s  空白符 \n 换行符 \t  制表符 \b  单词的边界 \W  \D \S 非xxx [ ...

  5. python中正则匹配之re模块

    Python中正则表达式 re:re是提供正则表达式匹配操作的模块 一.什么是正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某个模式匹配,Python 自1.5版本起 ...

  6. python浅谈正则的常用方法

    python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去 ...

  7. python中常用的模块的总结

    1. 模块和包 a.定义: 模块用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件.(例如:文件名:test.py,对应的模块名:test) ...

  8. Python::re 模块 -- 在Python中使用正则表达式

    前言 这篇文章,并不是对正则表达式的介绍,而是对Python中如何结合re模块使用正则表达式的介绍.文章的侧重点是如何使用re模块在Python语言中使用正则表达式,对于Python表达式的语法和详细 ...

  9. python中的正则表达式(re模块)

    一.简介 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配.正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎 ...

随机推荐

  1. CheatEngine-内存修改

    0.备注+待完成 //备注 a). 如果有方括号,就是说CE认为找 到了数值的指针了 //待完成 a). 自动导出外挂 b). 菜单栏中"表单"下的lua是做什么用的 c). CE ...

  2. ThreadPoolExecutor线程池的keepAliveTime

    keepAliveTime含义 看了很多文章觉得都不能把keepAliveTime的意思说的很明白,希望通过自己的理解把keepAliveTime说的明确一些 先引用一句我觉得相对说的比较明白的含义: ...

  3. css相关知识

    display: block; "块级元素". display: inline; "行内元素". display: none; "在不删除元素的情况下 ...

  4. 使用SpringSession管理分布式系统的会话Session

    在我方供应链项目分布式部署的环境下,需要在统一网关服务中管理访问的Session,即无论访问请求路由到哪一个网关服务环境,使用的都是相同的HttpSession,这样就保证了在用户登录之后,能够使用统 ...

  5. return false;和e.preventDefault;和e.stopPropagation的区别

    因为有父, 子节点同在, 因为有监听事件和浏览器默认动作之分. 使用 JavaScript 时为了达到预期效果经常需要阻止事件和动作执行. 一般我们会用到三种方法, 分别是 stopPropagati ...

  6. web端 css hack(一)

    逢10月小长假,几天不敲键盘,浑身难受.也是有时间分享一下自己遇到的css问题.先说一下什么css hack 简单介绍一下css hack: 定义: 一般都是利用各浏览器的支持CSS的能力和BUG来进 ...

  7. Ubuntu 12.04搭建svn服务器【转】

    这是一个比较老旧的话题,毕竟大家现在都使用Git(http://git-scm.com/),Git在分支.代码存储.冲突.速度方面的机制都更优秀. 那我们难道还有使用svn的场景?当然,比如对Git很 ...

  8. Python开发环境Wing IDE设置Python路径详解

    在使用Wing IDE的时候,Python源代码取决于PYTHONPATH(无论是外部或通过内部改变sys.path系统设置),用户需要将路径设置到Wing IDE中. 这个值可以从项目菜单和工具栏的 ...

  9. Unicode字符集

    Unicode字符集的出现是为了弥补ASCII码只能表示128个字符的限制.在实际应用中,如若我们想显示汉字或日文等等,显然使用ASCII是不可能的.Unicode占用了两个字节,即16位,能表示的字 ...

  10. 配置海康IPC或大华IPC通过路由器公网访问

    设备:路由器DLink-DIR-600M,海康IPC:DS-2CD864FWD-E 海康默认端口为8000,HTTP访问为80,RTSP访问端口为554. 配置分成两步,分别为配置IPC相关网络参数和 ...