Python中使用正则的两种方式

在Python中有两只能够使用正则表达式的方式:

  • 直接使用re模块中的函数
import re
re_string = "{{(.*?)}}"
some_string="this is a string with {{words}} enmbedded in {{curly brackets}}.."
for match in re.findall(re_string, some_string):
    print("MATCH->", match)

MATCH-> words
MATCH-> curly brackets

直接使用re模块中的函数

  • 创建一个它编译的正式表达式对象,然后使用对象中的方法
import re
re_obj = re.compile("{{.*?}}")
some_string="this is a string with {{words}} enmbedded in {{curly brackets}}.."
for match in re_obj.findall(some_string):
   print("MATCH->", match)

MATCH-> {{words}}
MATCH-> {{curly brackets}}

使用编译的对象

我们可以根据个人喜好选择使用其中一种正则表达式的方法,然而,使用第二种方法对性能好很多

原始字符串与正则表达式

In [12]: raw_pattern = r'\b[a-z]+\b'
In [13]: non_raw_pattern = '\b[a-z]+\b'
In [14]: some_string = 'a few little words' 

In [15]: re.findall(raw_pattern, some_string)
Out[15]: ['a', 'few', 'little', 'words']
In [16]: re.findall(non_raw_pattern, some_string)
Out[16]: []

正则表达式模式"\b"匹配单词边界。raw_patern匹配了在some_string中合适的单词边界,而non_raw_patter根本没有任何匹配

raw_pattern将"\b"识别为两个字符,而不是解析为转移字符中的退格字符

non_raw_pattern则将"\b"解析为转移字符中的退格字符

findall()

In [19]: import re                                                                                                       

In [20]: re_obj = re.compile(r'\bt.*?e\b')                                                                               

In [21]: re_obj.findall("tim tame tune tint tire")
Out[21]: ['tim tame', 'tune', 'tint tire']

模式没有定义任何组,因此findall()返回一个字符串列表

有趣的是返回列表的

Python使用正则的更多相关文章

  1. python re 正则

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  2. python 速记正则使用(转)

    目录 python 速记正则使用(转) 正则表达式语法 字符与字符类 量词 组与捕获 断言与标记 条件匹配 正则表达式的标志 Python正则表达式模块 四大功能 两种方法 常用方法 匹配对象的属性与 ...

  3. python的正则re模块

    一. python的正则 python的正则模块re,是其内置模块,可以直接导入,即import re.python的正则和其他应用的正则及其相似,有其他基础的话,学起来还是比较简单的. 二. 正则前 ...

  4. python - 手机号正则匹配

    Python 手机号正则匹配 # -*- coding:utf-8 -*- import re def is_phone(phone): phone_pat = re.compile('^(13\d| ...

  5. Python(正则 Time datatime os sys random json pickle模块)

    正则表达式: import re #导入模块名 p = re.compile(-]代表匹配0至9的任意一个数字, 所以这里的意思是对传进来的字符串进行匹配,如果这个字符串的开头第一个字符是数字,就代表 ...

  6. Python之正则

    从学习Python至今,发现很多时候是将Python作为一种工具.特别在文本处理方面,使用起来更是游刃有余. 说到文本处理,那么正则表达式必然是一个绝好的工具,它能将一些繁杂的字符搜索或者替换以非常简 ...

  7. 转--python之正则入门

    原文地址 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法 ...

  8. Python基础(正则、序列化、常用模块和面向对象)-day06

    写在前面 上课第六天,打卡: 天地不仁,以万物为刍狗: 一.正则 - 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法: - 在线正则工具:http://tool ...

  9. python re正则

    一:什么是正则? 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则.(在Python中)它内嵌在Python中,并通过 r ...

随机推荐

  1. 从咖啡馆的经营看 Web 应用的扩展

    我经营着一家咖啡馆.经营成本同所用的资源成正比. 我的咖啡馆店面大概有一百平方英尺(约九平方米),雇佣了一个咖啡师,一台咖啡机. 营业能力: 每次能够服务一个顾客,用三分钟泡制一杯咖啡,算下来服务一个 ...

  2. IE10下 FormsAuthentication.SetAuthCookie无效的问

    问题是这样的,我在本地测试设置身份验证票据都没问题,发布到服务器后访问地址添加了一些特殊的字符,看起来像加过密的,如下: http://www.example.com/(F(1xe9eXIxPzMAL ...

  3. 20155307 2016-2017-2 《Java程序设计》第6周学习总结

    20155307 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 串流数据有来源及目的地,衔接两者的是串流对象.如果要将数据从来源取出,可以使用输入串流:如果 ...

  4. css的盒模型手机端兼容写法应该是啥样的呢?

    前言:刚刚接触css3的盒模型,感觉对于解决水平垂直居中.固定宽度/高度和可变宽度/高度同时存在这样的问题很有效.但是最近在看一个腾讯手机端框架(Frozen UI )的时候发现一个很神奇的多行文字截 ...

  5. 【比赛游记】THUSC2018酱油记

    day -1 早上4:30就要起来去飞机场…… 7点的飞机,10:30就到北京了. 北京的街景并没有我想像的漂亮……大概是因为我在四环外〒▽〒 晚上还有CF div3场,果断的去水了,因为太累就没有打 ...

  6. cocos2d-x 日志...

    cocos2d-x  日志... http://blog.csdn.net/themagickeyjianan/article/details/39008297http://blog.csdn.net ...

  7. 缓存数据库-redis介绍

    一:Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的 ...

  8. IE手工导入证书

    打开cer文件->欢迎使用证书导入向导->下一步->将所有的证书放入下列存储->受信任的根证书颁发机构->完成

  9. KDE 下 U 盘挂载失败

    重装完 KDE 后发现在 dolphin 中无法挂载 U 盘了,提示 unable to authenticate.但是用 udisksctl 却可以挂载: yyc@TDesk run > ud ...

  10. Java流(Stream)、Scanner类

    读取控制台输入 Java 的控制台输入由 System.in 完成. 为了获得一个绑定到控制台的字符流,你可以把 System.in 包装在一个 BufferedReader 对象中来创建一个字符流. ...