python基础学习1-正则表达式

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import re
print(re.findall(‘alex‘,‘yyyyabbblalexrrreooox‘))

# ”.“ 通配符   匹配除开”\“以外的其他字符
print(re.findall(‘al.x‘,‘yyyyaalqxbbblalexrrreooox‘))

#”^“  在启始位置匹配:
print(re.findall(‘^al‘,‘alyyyyaalqxbbblalexrrreooox‘))

#”$“  在结束位置匹配:
print(re.findall(‘oo.$‘,‘alyyyyaalqxbbblalexrrreooox‘))

#”*“  表示重复 在出现的位置表示对"前一个"字符可以匹配0到多个字符:
print(re.findall(‘al.*a‘,‘alyyyyaalqxbbblalexrrreooox‘))

#”+“  表示重复 在出现的位置表示对"前一个"字符可以匹配1到多个字符:
print(re.findall(‘al.+x‘,‘alyyyyaalqxbbblalexrrreooox‘))

#”?“  表示重复 在出现的位置表示对"前一个"字符可以匹配0到1个字符:
print(re.findall(‘al.?x‘,‘alyyyyaalqxbbblalexrrreooox‘))

#”{}“  表示重复 在出现的位置表示对"前一个"字符可以匹配指定范围个字符:
print(re.findall(‘al.{1,3}x‘,‘alyyyyaalqxbbblalexrrreooox‘))

#”[]“  表示重复 在出现的位置表示可以匹配指定字符出现请 :
print(re.findall(‘a[a-z]d‘,‘acd‘))#a开头 中间出现a-z中任意一个字符 d结尾 都可以匹配 例如 "abd‘,‘acd‘
#在[]中出现的元字符 都没有特殊功效只能匹配成一般字符 除开 ”-“表示范围 "^"表示 非  "\d" 表示 数字
print(re.findall(‘a[^f]d‘,‘acd‘)) #a开头 中间出现非f  d结尾 都可以匹配 例如 "abd‘,‘acd‘
print(re.findall(‘a[\d]d‘,‘acd‘)) #a开头 中间出现数字  d结尾 都可以匹配 例如 "a1d‘,‘a5d‘

"""
 \ 反斜杠后边跟元字符去除特殊功能
 反斜杠后边跟普通字符实现特殊功能
 \d 匹配十进制数字 相当于[0-9]
 \D 匹配任何非数字字符 相当于[^0-9]
 \s 匹配任何空白字符 相当于[\t\n\r\f\v]
 \S 匹配任何非空白字符 相当于[^\t\n\r\f\v]
 \w 匹配任何字母数字字符 相当于[a-zA-Z0-9_]
 \W 匹配任何非字母数字字符 相当于[^a-zA-Z0-9_]
 \b 匹配一个单词后面的空格

"""

#正则表达式的 函数

#match : re.match(pattern,string,flags=0) 只匹配启始位置 并且只匹配一次 找到后退出
r =re.match(‘com‘,‘comwww.runcomoob‘)
print(r.group())#输出匹配到的字符
print(r.span())#输出匹配到字符的位置信息 启始位置 和终止位置(0,3)

#search : 和match的区别是search匹配任意位置 并且只匹配一次找到后退出
rs = re.search(‘com‘,‘www.runcomoob‘)
print(rs.group())#输出匹配到的字符
print(rs.span())#输出匹配到字符的位置信息 启始位置 和终止位置(7,10)

#findall:  和上面两个函数方法的 是查询出所有匹配的字符串
ra = re.findall(‘com‘,‘comwww.runcomoob‘)
print(ra)

#findditer: 匹配方法和 findall一样就是返回值 是返回的一个列表
rr = re.finditer(‘com‘,‘comwww.runcomoob‘)
for item in rr:
    print(item.group())
    print(item.span())

#sub 安装匹配的字符串替换内容 参数1-需要匹配的字符串格式  2-替换后内容 3-需要替换的原字符串
rsu= re.sub(‘g.t‘,‘have‘,‘Y get A,I got B ,I gut C‘)#返回替换后的字符串
print(rsu)
rsu1 =  re.sub(‘g.t‘,‘have‘,‘Y get A,I got B ,I gut C‘,2)#返回替换后的字符串 指定最大替换次数2
print(rsu1)

#subn 安装匹配的字符串替换内容 参数1-需要匹配的字符串格式  2-替换后内容 3-需要替换的原字符串 返回值多了 返回替换成功次数
rn= re.subn(‘g.t‘,‘have‘,‘Y get A,I got B ,I gut C‘)#返回替换后的字符串
print(rn)

#splite 按照匹配的格式分拆
rp = re.split(‘\d+‘,‘one1tow2tree3four4‘)
print(rp)

#compile 把正则表达式编译成一个对象 便于多次调用
text = "JGood is a handsome boy, he is cool, clever, and so on..."
regex = re.compile(r‘\w*oo\w*‘)#创建正则表达式对象 regex
print(regex.findall(text)) #查询所有包含‘oo‘的单词

# r 转意字符
r5=re.search(r‘\\com‘,‘adddss\com‘).group()  #匹配‘\com‘
print(r5)

#------正则分组::去已经提取到的数据中在提取指定数据
ors="hasaabc dfuojqw halaabc m098u29341"
ra1 = re.findall(‘h(\w+)a(ab)c‘,ors)#默认提取到两个 ‘halaabc‘,‘hasaabc‘ 在把其中括号括起来的‘as‘,‘al‘ 取出来分别和后面‘ab‘
# 组一个值 [(‘as‘,‘ab‘),(‘al‘,‘ab‘)]
print(ra1)

#match 和 search 分组方式一样
origin ="has dfuojqw1m098u29341"
r= re.match("h\w+",origin) #一般正则匹配未分组
r=re.match("h(\w+)",origin)#匹配后分组  显示(‘as‘,)
r =re.match("h(?P<name>\w+)",origin)#匹配后分组,并把分组结果保存在字典中 key为name

print(r.group())
print(r.groups())
print(r.groupdict())

#splite

orr = "hello alex bcd alex lge alex acd 19"
rs = re.split(‘(alex)‘,orr,1) #分组后 把匹配值 也显示出来[‘hello ‘, ‘alex‘, ‘ bcd alex lge alex acd 19‘]
rrs = re.split(‘alex‘,orr,1)# 未分组,只才分[‘hello ‘, ‘ bcd alex lge alex acd 19‘]
print(rrs)
print(rs)
时间: 2024-11-12 16:31:03

python基础学习1-正则表达式的相关文章

python基础学习日志day5-各模块文章导航

python基础学习日志day5---模块使用 http://www.cnblogs.com/lixiang1013/p/6832475.html python基础学习日志day5---time和datetime模块 http://www.cnblogs.com/lixiang1013/p/6848245.html python基础学习日志day5---random模块http://www.cnblogs.com/lixiang1013/p/6849162.html python基础学习日志da

Python 基础学习 网络小爬虫

<span style="font-size:18px;"># # 百度贴吧图片网络小爬虫 # import re import urllib def getHtml(url): page = urllib.urlopen(url) html = page.read() return html def getImg(html): reg = r'src="(.+?\.jpg)" pic_ext' imgre = re.compile(reg) imgli

python基础学习05(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #dict{键:值} #哈希 #注:字典是无顺序的,所以你懂的 #创建与赋值 dict1={} dict2={'name':'apply','avg':24,'sex':'man'} print dict1,dict2

Python基础学习(九)

Python 多线程 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度 程序的运行速度可能加快 在一些等待的任务实现上如用户输入.文件读写和网络收发数据等,线程就比较有用了.在这种情况下我们可以释放一些珍贵的资源如内存占用等等. 线程在执行过程中与进程还是有区别的.每个独立的线程有一个程序运行的入口.顺序执行序列和程序的出口.

python基础学习07(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #file与input output #文件对象 #简单说来,就是写入和读取的方式 #file(),open()2个操作都是一样的,一般推荐open() #语法 # open(name[, mode[, bufferin

python基础学习08(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #异常 """ NameError: 尝试访问一个未申明的变量 ZeroDivisionError:  除数为零 SyntaxError: 解释器语法错误 IndexError: 请求的索引超出序列范

Python基础学习(十)

Python I/O模型 同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一下本文的上下文. 概念说明 在进行解释之前,首先要说明几个概念: 用户空间和内核空间 进程切换 进程的阻塞 文件描述符 缓存 I/O 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件

python基础学习12(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #python class #面向对象编程oop思想,3个特性:封装.继承.多态,在其他方面的功能,比如重载,模拟等,也可以自定义自己需要的类 #在python中,面向对象主要2个:类和类实例 #类与实例 #类与实例有关

python基础学习09(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #什么是函数 #就是引用,创建,使用 #例子 def foo(): print '233' foo() #返回与函数类型 def foo1():#是一个过程 print 'hello world!' foo1() foo

python基础学习11(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #执行环境 #可调用对象 """ 许多的python 对象都是我们所说的可调用的,即是任何能通过函数操作符“()”来调用的对象.要调用可调用对象, 函数操作符得紧跟在可调用对象之后.Python 有4