python正则表达式之使用规则
正则表达式在我看来是提供一个模板,将待匹配的字符串与模板匹配,匹配不到则返回为空,匹配成功根据需要返回匹配的字符串。
正则表达式比字符串本身的功能要强一点,当然性能上略有不如。
我们使用正则表达式主要有两种目的,
> 是否包含模板字符串;
> 得到匹配字符串。
python 中使用正则表达式时需要引入“re”模块,为了避免记忆上的混乱,本文只记载一种最常用的使用正则表达式的方式。
使用流程:
# encoding:utf-8 # 引入re模块
import re #生成正则表达式模板
pat = re.compile(r'') #匹配结果
m=pat.search("123 12")
print m #匹配结果
m=pat.search("3 2")
print m # 输出:
# <_sre.SRE_Match object at 0x01FCFB48>
# None
match()和search()区别
在一些示例中,在匹配结果也会用到match方法,match和search的区别如下:
match :只从字符串的开始与正则表达式匹配,匹配成功返回matchobject,否则返回none;
search :将字符串的所有字串尝试与正则表达式匹配,如果所有的字串都没有匹配成功,返回none,否则返回matchobject;
示例如下:
pat = re.compile(r'')
m=pat.search("")
print m
# <_sre.SRE_Match object at 0x01FCFB48>
m=pat.match("")
print m
# None
m=pat.match("")
print m
# <_sre.SRE_Match object at 0x01FCFB48>
分组的概念和findall()
当我们想将符合正则规则的字符串提取时,可以用()将规则包起来即可。例如:我们想提取超链接
pat = re.compile(r'href="([^"]*)"')
s = '<a href="http://www.qidian.com/">起点中文</a>'
m = pat.search(s)
print m.group(0)
# href="http://www.qidian.com/
print m.group(1)
# http://www.qidian.com/
“()”表示我们想要提取的字符串内容,用group()函数方法取得,group(0) 取得匹配的字符串,group(1)取得第一个分组。
当要取得所有符合规则的字符串时我们可使用findall()方法
pat = re.compile(r'href="([^"]*)"')
s = '<a href="http://www.qidian.com/">起点中文</a><a href="http://www.qidian.com/">起点中文</a>'
m = pat.findall(s)
print m
#['http://www.qidian.com/', 'http://www.qidian.com/']
此时若匹配返回的结果是一个list。
反斜杠的困扰
pat = re.compile(r'href="([^"]*)"')
正则里面有个‘r’是原生字符串的意思,它表示不转义,例如:
path="c:\noway"
print path
# c:
# oway
path=r"c:\noway"
print path
# c:\noway
正则表达式用”\\”表示反斜杠符号,因此当要匹配字符串中的“\\”时需要用“\\\\”,前两个表示一个反斜杠即转义字符,后两个表示真正的反斜杠。当加上前缀r时,就只用“\\”匹配反斜杠。
示例如下:
re_str_patt = "\\\\"
reObj = re.compile(re_str_patt)
str_test = "abc\\cd\\hh"
print reObj.findall(str_test)
# ['\\', '\\']
r_str_patt = r"\\"
print reObj.findall(str_test)
# ['\\', '\\']
python正则表达式之使用规则的更多相关文章
- python 正则表达式规则收集
python正则表达式基本元字符 . 通配符,匹配所有字符 ^abc 匹配以abc开始的字符串 abc$ 匹配以abc结尾的字符串 [abc] 匹配字符集合 [A-Z0-9] 匹配字符范围 ...
- Python 正则表达式入门(中级篇)
Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...
- Python 正则表达式入门(初级篇)
Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. 转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达 ...
- 比较详细Python正则表达式操作指南(re使用)
比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...
- Python天天美味(15) - Python正则表达式操作指南(re使用)(转)
http://www.cnblogs.com/coderzh/archive/2008/05/06/1185755.html 简介 Python 自1.5版本起增加了re 模块,它提供 Perl 风格 ...
- Python正则表达式Regular Expression基本用法
资料来源:http://blog.csdn.net/whycadi/article/details/2011046 直接从网上资料转载过来,作为自己的参考.这个写的很清楚.先拿来看看. 1.正则表 ...
- Python 正则表达式 (python网络爬虫)
昨天 2018 年 01 月 31 日,农历腊月十五日.20:00 左右,152 年一遇的月全食.血月.蓝月将今晚呈现空中,虽然没有看到蓝月亮,血月.月全食也是勉强可以了,还是可以想像一下一瓶蓝月亮洗 ...
- 爬数据,能让你少写1000行代码的捷径! | Python 正则表达式
▌春暖花开,又到了出门游玩拍拍拍吃吃吃的好季节了! 说到拍照摄影,你会构图吗?就是在照片有限的空间内处理人.景.物的关系,并将三者安排在画面中最佳的位置,以形成画面特定结构的方法. 学院君就是一个「拍 ...
- python正则表达式基础,以及pattern.match(),re.match(),pattern.search(),re.search()方法的使用和区别
正则表达式(regular expression)是一个特殊的字符序列,描述了一种字符串匹配的模式,可以用来检查一个字符串是否含有某种子字符串. 将匹配的子字符串替换或者从某个字符串中取出符合某个条件 ...
随机推荐
- 老毛桃U盘启动盘制作工具V20140501完美贡献版
老毛桃U盘启动盘制作工具V20140501完美贡献版 下载地址:http://down.laomaotao.net:90/LaoMaoTao_V2014zhuangji.exe 老毛桃U盘装系统综合教 ...
- 《深入Linux内核》 UNIX的一些故事
Unix文件的类型1.普通文件2.目录3.符号链接4.面向块的设备文件5.面向字符的设备文件6.管道和命名管道7.套接字 点评:不明觉厉 打开文件进程只能访问“打开的”文件.为了打开一个文件,进程调用 ...
- 实战weblogic集群之安装weblogic
一.系统及软件版本 OS版本:Red Hat Enterprise Linux Server release 6.6WebLogic Server 版本: 10.3.3.0JDK版本:1.7.0_79 ...
- 【转】Android自定义Adapter的ListView的思路及代码
原文网址:http://www.jb51.net/article/37236.htm Android自定义Adapter的ListView的思路及代码,需要的朋友可以参考一下 在开发中,我们经常使 ...
- Delhpi TdxComponentPrinter怎样联上dxdbgrid中的数据打印
有谁知道TdxComponentPrinter怎样联上dxdbgrid中的数据打印? 有谁知道TdxComponentPrinter怎样联上dxdbgrid中的数据打印? 回复人: ...
- Partition List ——LeetCode
Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...
- Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat的家伙们)详解二
准备工作:新建第一个JavaWeb项目 step3 给第一次配置tomcat的家伙们再说一遍如何配置tomcat 3.1 [Run]-[Edit Configurations] 3.2 [Defaul ...
- hive 显示表分区真实对应数据路径
desc formatted l_ad_yclick_html partition (datecol='20160118');
- 5th day
感觉mysql里面的东西好多,很容易忘记,不是很熟练,知道某些函数有某种功能,但就是想不起来函数的名字,需要去翻笔记,真的还需要大量的练习,毕竟这块的内容可以说是全新的...不知道后面做项目怎么样,这 ...
- UNIX编程之冲洗内存流与null追加策略(APUE F5-15)
博文链接:http://haoyuanliu.github.io/2016/04/29/mysql/ 对,我是来骗访问量的!O(∩_∩)O~~ 最近一直在拜读APUE(Advanced Program ...