python正则表达式之使用规则

     正则表达式在我看来是提供一个模板,将待匹配的字符串与模板匹配,匹配不到则返回为空,匹配成功根据需要返回匹配的字符串。

正则表达式比字符串本身的功能要强一点,当然性能上略有不如。

我们使用正则表达式主要有两种目的,

       > 是否包含模板字符串;

       > 得到匹配字符串。

python 中使用正则表达式时需要引入“re”模块,为了避免记忆上的混乱,本文只记载一种最常用的使用正则表达式的方式。

使用流程:

 1 # encoding:utf-8
 2
 3 # 引入re模块
 4 import re
 5
 6 #生成正则表达式模板
 7 pat = re.compile(r‘12‘)
 8
 9 #匹配结果
10 m=pat.search("123 12")
11 print m
12
13 #匹配结果
14 m=pat.search("3 2")
15 print m
16
17 # 输出:
18 # <_sre.SRE_Match object at 0x01FCFB48>
19 # None

match()和search()区别

在一些示例中,在匹配结果也会用到match方法,match和search的区别如下:

match :只从字符串的开始与正则表达式匹配,匹配成功返回matchobject,否则返回none;

   search :将字符串的所有字串尝试与正则表达式匹配,如果所有的字串都没有匹配成功,返回none,否则返回matchobject;

示例如下:

pat = re.compile(r‘12‘)

m=pat.search("312")
print m
# <_sre.SRE_Match object at 0x01FCFB48>

m=pat.match("312")
print m
# None

m=pat.match("123")
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)
# [‘\\‘, ‘\\‘]

  

时间: 2024-12-18 06:07:51

python正则表达式之使用规则的相关文章

python 正则表达式规则收集

python正则表达式基本元字符 .   通配符,匹配所有字符 ^abc  匹配以abc开始的字符串 abc$  匹配以abc结尾的字符串 [abc]  匹配字符集合 [A-Z0-9] 匹配字符范围 ed|ing|s 匹配指定的字符串,诸如ed或者ing或者s *   前面项目0个或者多个,如a*/[a-z]* (也叫Kleene闭包) +   前面项目1个或者多个,如a+.[a-z]+ ?   前面项目0个或者1个,如a?.[a-z]? {n}   重复n次 {n,}  至少重复n次 {,n}

Python正则表达式Regular Expression基本用法

资料来源:http://blog.csdn.net/whycadi/article/details/2011046   直接从网上资料转载过来,作为自己的参考.这个写的很清楚.先拿来看看. 1.正则表达式re模块的基本函数. (1)findall函数的用法 findall(rule,target[,flag])是在目标字符串中找到符合规则的字符串.参数说明:rule表示规则,target表示目标字符串,[,flag]表示的是规则选项.返回的结果是一个列表.若没找到符合的,是一个空列表. 如: 因

python正则表达式re

1. 正则表达式简介 正则表达式并不是Python的一部分.在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别 只在于不同的编程语言实现支持的语法数量不同:但不被支持的语法通常是不常用的部分.python正则表 达式是用于文本匹配的强大工具,在源字符串中查找与给定的正则表达式相匹配的部分.一个正则表达式 是由字母.数字和特殊字符(括号.星号和问号等)组成. 正则表达式中的特殊字符:^      正则表达式的开始字符$      正则表达式的结束字符\w     匹配字母.数字.下划线,

Python——正则表达式(5)

本文译自官方文档: Regular Expression HOWTO 参考文章: Python--正则表达式(1) Python--正则表达式(2) Python--正则表达式(3) Python--正则表达式(4) 全文下载: Python正则表达式基础 ====================================================================================== 6.常见问题 正则表达式在应用中是非常强大的工具,但有时候它们并不能

八、Python正则表达式

Python正则表达式 一.正则表达式(或RE)是一种小型的.高度专业化的编程语言 --- 可以为想要匹配的相应字符串集指定规则 --- 该字符串集可能包含英文语句.e-mail地址.命令或者任何你想搞定的东西 --- 可以问诸如"这个字符串匹配该模式吗?" --- "在这个字符串中是否有部分匹配该模式呢?" --- 你也可以使用RE以各种方式来修改或分割字符 正则表达式模式被编译成一系列的字节码,然后有用C编写的匹配引擎执行 正则表达式语言相对小型和受限(功能有限

python——re和正则规则

re模块和正则规则: 正则规则:在线测试工具 http://tool.chinaz.com/regex/ 字符组 : [字符组] 在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示字符分为很多类,比如数字.字母.标点等等.假如你现在要求一个位置"只能出现一                               个数字",那么这个位置上的字符只能是0.1.2...9这10个数之一. 字符: 元字符 匹配内容 .  匹配除换行符以外的任意字符 \w 匹配字母或数

python 正则表达式 re.sub &amp; re.subn

python正则表达式模块简介 Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 Emacs 风格的模式.Emacs 风格模式可读性稍差些,而且功能也不强,因此编写新代码时尽量不要再使用 regex 模块,当然偶尔你还是可能在老代码里发现其踪影. 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.使用这个小型语言

Python 正则表达式入门

Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写.转载请写明出处 中级篇介绍子表达式,向前向后查找,回溯引用 链接:http://www.cnblogs.com/chuxiuhong/p/5907484.html 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符

Python学习:13.Python正则表达式

一.正则表达式简介 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言, (在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被 编译成一系列的字节码,然后由用 C 编写的匹配引擎执行. re 模块使 Python 语言拥有全部的正则表达式功能. compile 函数根据一个模