正则表达式,re模块

正则表达式

在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。

^:开头
$:结尾
比如一个网站如果要求你填写的QQ号必须为5位到12位数字时,可以使用:^\d{5,12}$。

字符转义
想查找deerchao.net ,需要将特殊符号转义 deerchao.net
想查找C:\Windows ,需要将特殊符号转义 C:\Windows

重复

Windows\d+匹配Windows后面跟1个或更多数字
^\w+匹配一行的第一个单词

11{1,3}:表示11出现1次至3次(111,1111,11111),比如输入1141114111411114

字符类

[aeiou]就匹配任何一个英文元音字母,[.?!]匹配标点符号(.或?或!)

[0-9]代表的含意与\d就是完全一致的:一位数字;同理[a-z0-9A-Z_]也完全等同于\w

(?0\d{2}[) -]?\d{8} :1、转义字符( 出现0次或者1次(?) 2、跟着0 然后跟着2个数字(\d{2})3、然后是 )或者空格 或者 - 中的一个[) -] ,出现0次或者1次(?)
4、后面跟着8个数字(\d{8})

分枝条件
刚才那个表达式也能匹配010)12345678或(022-87654321这样的“不正确”的格式。要解决这个问题,我们需要用到分枝条件。正则表达式里的分枝条件指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,具体方法是用|把不同的规则分隔开

0\d{2}-\d{8}|0\d{3}-\d{7}:这个表达式能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)。

分组

(\d{1,3}.){3}\d{1,3}:1、表示(\d{1,3}.) 是一个分组 数字重复出现1,3次,. 表示转义 2、{3} 表示重复3次 2、\d{1,3}:重复前面的数字1,3次
\d:1到9

反义

有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义:

例子:\S+匹配不包含空白符的字符串。

<a[^>]+>匹配用尖括号括起来的以a开头的字符串。

re模块

re.match函数
尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none

函数语法:
re.match(pattern, string, flags=0)

例子1:
import re
s = "ab<h1>xxx</h1>dsafasdf<html>sdfads</html>"
reg = re.compile(r"(<(?P<tag>\w+)>(.*)</(?P=tag)>)")
print(reg.findall(s))

结果:
[(‘<h1>xxx</h1>‘, ‘h1‘, ‘xxx‘), (‘<html>sdfads</html>‘, ‘html‘, ‘sdfads‘)]

分析:1、compile方法是将正则编译成一个对象,效率比直接写正则表达式要高
2、r"" :表示双引号内的特殊字符不需要转义,如?,$号,不需要加上\
3、<?P<tag>\w> :表示将数据字母组成一个组名为tag
1、?P<name>命令一个组名为tag,后面调用就是?P=tag
2、\w:数字,字母
4、.*:贪婪模式 ,表示所有
5、findall 是将正则表达式中带有()的匹配,只要()里面的匹配到了就放到列表里

例子2:
s = "ab<h1>xxx</h1>dsafasdf<html>sdfads</html>"
reg = re.compile(r"(<(?P<tag>\w+)>(.*)</(?P=tag)>)")
print(reg.match(s))

结果为:None (没匹配到,因为s 是以ab开头的,正则表达式以<开头)

re.match与re.search的区别:

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配就返回。
例子:
s = "ab<h1>xxx</h1>dsafasdf<html>sdfads</html>"
reg = re.compile(r"(<(?P<tag>\w+)>(.*)</(?P=tag)>)")

print(reg.search(s).group(1)) #group(1):表示返回第一个括号的内容,group() 同group(0)就是匹配正则表达式整体结果

没有匹配成功的,re.search()返回None

split

p = re.compile(r‘\d+‘)
print p.split(‘one1two2three3four4‘)

结果: [‘one‘, ‘two‘, ‘three‘, ‘four‘, ‘‘]

原文地址:http://blog.51cto.com/jacksoner/2112543

时间: 2024-10-11 04:55:31

正则表达式,re模块的相关文章

Python文件交互,模块与Pickle序列化,正则表达式re模块

先说点其他的. sudo       以超级权限运行命令 su         切换到root用户 sudo su    以超级权限切换到root用户 这是他们之间的区别. 文件的读取: f = file('abc.txt') 与f = open('abc.txt')方法一样. f = file('abc.txt',w)打开一个写文件,不带参数默认打开一个读文件. 模式有: r ## w ## a ## rw ## rb ## wb ## ab## f.read() 返回字符串 f.readli

常用模块--- 正则模块 正则表达式 re 模块

# 正则模块# 正则表达式# re模块 #--------------------------------------- time -----------------------------------------# 计算时间差# 做时间格式的转换 # 所有的模块要经历的两个步骤 # 要操作的概念本身 : 正则表达式 时间 # 使用模块去操作它 : re time # 学习 正则表达式 本身 # 什么是正则表达式 # 一种匹配字符串的规则 # input 一串数据 : # 是不是qq号码 : 全

Python基础13_正则表达式,re模块,

一. 正则表达式 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式通常被用来检索.替换那些符合某个模式(规则)的文本. 正则表达式由普通字符和元字符组成, 普通字符包含大小写字母, 数字. 在匹配普通字符的时候我们直接写就可以了 元字符是正则表达式的灵魂 1. 字符组 字符组用[]括起来, 在[]中的内容会被匹配 [a-zA-Z0-9]    表示所有的数字字母 2. 简单元字符 .   

python 正则表达式re模块

#####################总结##############    优点:  灵活, 功能性强, 逻辑性强.               缺点:  上手难,旦上手, 会爱上这个东西       工具: 各大文本编辑器一般都有正则匹配功能. 我们也可以去 http://tool.chinaz.com/regex/进行在线测试. 正则表达式由普通字符和元字符组成,普通字符包含大小写字母, 数字,在匹配普通字符的时候我们直接写就可以了 (1) 字符组  字符组很简单用[]括起来,在[]中

Python常用模块——正则表达式re模块

Python常用模块--正则表达式re模块 引子 请从以下文件里取出所有的手机号 姓名 地区 身高 体重 电话 况咏蜜 北京 171 48 13651054608 王心颜 上海 169 46 13813234424 马纤羽 深圳 173 50 13744234523 乔亦菲 广州 172 52 15823423525 罗梦竹 北京 175 49 18623423421 刘诺涵 北京 170 48 18623423765 岳妮妮 深圳 177 54 18835324553 贺婉萱 深圳 174 5

7.python之正则表达式re模块

一.re模块的常用方法: re.findall() 用于返回一个字符串中,所有能被正则表达式所匹配到的字符串,以列表的方式返回. 用法re.findall(正则表达式,字符串). s1 = "sadjhjafdsajkhjsdaysadsadduayu" 比如说,想要从上面这一长串字符串中,匹配出a后面有一个任一字符在紧接着一个字母u的字符串. print re.findall('a.u',s1) >>>['ayu'] re.finditer()作用和findall一

python之路 正则表达式,模块导入的方法,hashlib加密

一.正则表达式re python中re模块提供了正则表达式相关操作 字符: . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 次数: * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次 模式 描述 ^ 匹配字符串的开头 $ 匹配字符串的末尾. . 匹配任意字符,除了换行符,当re.DO

python基础-匿名函数、内置函数、正则表达式、模块

1. 匿名函数 1.1 有名函数 有名函数:定义了一个函数名,函数名指向内存地址:通过函数名进行访问.函数名加括号就可以运行有名函数,例如:func() def func(x, y, z = 1): return x + y + z print(func(1,5,2)) 1.2 匿名函数 匿名函数:没有名字的函数,定义的时候不需要函数名:定义匿名函数的关键字是:lambda 特点: 1.没有函数名 2.函数自带return 应用场景: 1.应用于一次性的地方 2.临时使用 salaries={

python之基础篇(十一)——正则表达式RE模块

防伪码:忘情公子著 正则表达式(RE)是一种小型的.高度专业化的编程语言,在python中,它通过re模块实现. 正则表达式可以实现以下功能: 为想要匹配的相应字符串集指定规则: 能够匹配不定长的字符集: 可以指定正则表达式的一部分的重复次数: 可以使用RE以各种方式来修改或分割字符串 正则表达式模式被编译成一系列的字节码,然后由C编写的匹配引擎执行. 字符匹配: 普通字符: 大多数字母和字符一般都会和自身匹配. 如正则表达式test会和字符串"test"完全匹配 元字符: []: 常

冒泡算法,递归,正则表达式,模块,格式化字符串的整理

一.冒泡排序原理整理图 二.递归流程图剖析 三.正则表达式内容整理 1.re模块:python中re模块提供了正则表达式相关操作 2.元字符的整理 .  ^  $  *  +  ?  {}  []  |  \ 3.   .   匹配除换行符以外的任意字符(可以通过加参数re.S匹配上换行符) \w 匹配字母或数字或下划线或汉字 \s  匹配任意的空白符 \d  匹配数字 \b  匹配单词的开始或结束 ^   匹配字符串的开始 $  匹配字符串的结束 4.   * 重复零次或更多次(常用的) +