python-day05正则表达式

相关参考文档地址:http://bbs.fishc.com/thread-57073-1-1.html(小甲鱼论坛)

摘录老师之精华

re模块用于对python的正则表达式的操作。

字符:

  . 匹配除换行符以外的任意字符
  \w 匹配字母或数字或下划线或汉字
  \s 匹配任意的空白符
  \d 匹配数字
  \b 匹配单词的开始或结束
  ^ 匹配字符串的开始
  $ 匹配字符串的结束

次数:

  * 重复零次或更多次
  + 重复一次或更多次
  ? 重复零次或一次
  {n} 重复n次
  {n,} 重复n次或更多次
  {n,m} 重复n到m次

IP:
^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$
手机号:
^1[3|4|5|8][0-9]\d{8}$

1、match(pattern, string, flags=0)

从起始位置开始根据模型去字符串中匹配指定内容,匹配单个

  • 正则表达式
  • 要匹配的字符串
  • 标志位,用于控制正则表达式的匹配方式

1 import re
2
3 obj = re.match(‘\d+‘, ‘123uuasf‘)
4 if obj:
5     print obj.group()

flags

1 # flags
2 I = IGNORECASE = sre_compile.SRE_FLAG_IGNORECASE # ignore case
3 L = LOCALE = sre_compile.SRE_FLAG_LOCALE # assume current 8-bit locale
4 U = UNICODE = sre_compile.SRE_FLAG_UNICODE # assume unicode locale
5 M = MULTILINE = sre_compile.SRE_FLAG_MULTILINE # make anchors look for newline
6 S = DOTALL = sre_compile.SRE_FLAG_DOTALL # make dot match newline
7 X = VERBOSE = sre_compile.SRE_FLAG_VERBOSE # ignore whitespace and comments

2、search(pattern, string, flags=0)

根据模型去字符串中匹配指定内容,匹配单个

1 import re
2
3 obj = re.search(‘\d+‘, ‘u123uu888asf‘)
4 if obj:
5     print obj.group()

3、group和groups

1 a = "123abc456"
2 print re.search("([0-9]*)([a-z]*)([0-9]*)", a).group()
3
4 print re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(0)
5 print re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(1)
6 print re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(2)
7
8 print re.search("([0-9]*)([a-z]*)([0-9]*)", a).groups()

4、findall(pattern, string, flags=0)

上述两中方式均用于匹配单值,即:只能匹配字符串中的一个,如果想要匹配到字符串中所有符合条件的元素,则需要使用 findall。

1 import re
2
3 obj = re.findall(‘\d+‘, ‘fa123uu888asf‘)
4 print obj

5、sub(pattern, repl, string, count=0, flags=0)

用于替换匹配的字符串

content = "123abc456"
new_content = re.sub(‘\d+‘, ‘sb‘, content)
# new_content = re.sub(‘\d+‘, ‘sb‘, content, 1)
print new_content

相比于str.replace功能更加强大

6、split(pattern, string, maxsplit=0, flags=0)

根据指定匹配进行分组

示例

 1 content = "‘1 - 2 * ((60-30+1*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2) )‘"
 2 new_content = re.split(‘\*‘, content)
 3 # new_content = re.split(‘\*‘, content, 1)
 4 print new_content
 5 content = "‘1 - 2 * ((60-30+1*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2) )‘"
 6 new_content = re.split(‘[\+\-\*\/]+‘, content)
 7 # new_content = re.split(‘\*‘, content, 1)
 8 print new_content
 9 inpp = ‘1-2*((60-30 +(-40-5)*(9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2))‘
10 inpp = re.sub(‘\s*‘,‘‘,inpp)
11 new_content = re.split(‘\(([\+\-\*\/]?\d+[\+\-\*\/]?\d+){1}\)‘, inpp, 1)
12 print new_content

相比于str.split更加强大

时间: 2024-10-12 20:23:28

python-day05正则表达式的相关文章

My way to Python - Day05 - 面向对象-思维导图

My way to Python - Day05 - 面向对象 思维导图

python 中正则表达式

. 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 代码/语法 说明 * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次 [aeiou]就匹配任何一个英文元音字母,[.?!]匹配标点符号(.或?或!). [0-9]代表的含意与\d就是完全一致的:一位数字:同理[a-z0-9A-Z_]也完

python用正则表达式怎么查询unicode码字符

import re data = open('a.txt') fh = open('b.txt', 'w') """Search the string begining with '['""" p = re.compile(r'\s*[\u3010]') for each_d in data: if re.match('\s*3\d{4}', each_d): each_d = each_d.strip() print(each_d + ': '

【python】正则表达式

在python中,所有和正则表达式相关的功能都包含在re模块中. $表示字符串的末尾,^表示字符串的开始,原始字符串:字符串添加前缀r,表示字符串中的所有字符都不转义.\b表示单词的边界必须在这里. s="100 BROAD" re.sub('ROAD$','RD',s) 结果:'100 BRD' re.sub(r'\bROAD$','RD',s) 结果:100 BROAD M?可选地匹配单个字符,要么一个M,要么没有M.re模块的关键是一个search函数,该函数由两个参数,一个是正

python使用正则表达式文本替换

2D客户端编程从某种意义上来讲就是素材组织,所以,图片素材组织经常需要批量处理,python一定是最佳选择,不过是win/linux/mac都有一个简单的运行环境 举两个应用场景: 如果不是在某个文件夹里面则将文件夹名称插入前面 所有的文件名名称加上一个前缀 直接看代码吧 # encoding: UTF-8 import re # 将正则表达式编译成Pattern对象 p = re.compile(r'(?P<folder>(\w+/)*)(?P<filename>\w+\.png

Python使用正则表达式替换源码前序号

从博客园或其它地方拷贝代码,经常前面有代码序号,像下面这个样子: 1 wbContent.Navigate(vURL); 2  3     Result:=GetHtml(wbContent); 4  5     while not ContainsText(Result,'共找到') do 6     begin 7       Sleep(100); 8       Application.ProcessMessages; 9       Result:=GetHtml(wbContent)

python study - 正则表达式

第 7 章 正则表达式 7.1. 概览 7.2. 个案研究:街道地址 7.3. 个案研究:罗马字母 7.3.1. 校验千位数 7.3.2. 校验百位数 7.4. 使用 {n,m} 语法 7.4.1. 校验十位数和个位数 7.5. 松散正则表达式 7.6. 个案研究:解析电话号码 7.7. 小结 正则表达式是搜索.替换和解析复杂字符模式的一种强大而标准的方法.如果你曾经在其他语言 (如 Perl) 中使用过它,由于它们的语法非常相似,你仅仅阅读一下 re 模块的摘要,大致了解其中可用的函数和参数就

Python爬虫-正则表达式

正则表达式 只提取关注的数据,进行数据赛选 原子: 基本组成单位 普通的字符 非打印支付 通用字符 普通的字符 >>> import re >>> pat="yue" >>> string="http://yum.iqianyue.com" >>> rst1=re.search(pat,string) >>> print(rst1) <_sre.SRE_Match obj

python的正则表达式 re

python的正则表达式 re 本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以是Unicode字符,这点不用担心,python会处理地和Ascii字符一样漂亮. 正则表达式使用反斜杆(\)来转义特殊字符,使其可以匹配字符本身,而不是指定其他特殊的含义.这可能会和python字面意义上的字符串转义相冲突,这也许有些令人费解.比如,要匹配一个反斜杆本身,你也许要用'\\\\'来做为正则表达式的字符串,因为正则表达式要是\\,而字符串里,每个反斜杆都要写

Python re正则表达式模块学习【转】

感谢原作者,本文转自:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 博主还有一些比较好的python文档在此一并推荐,可以移步查看. 文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程. 注意:本文基于Python2.4完成:如果看到不明白的词汇请记得百度谷歌或维基,whate