runoob_python_1

#-*-coding:utf-8-*-
‘‘‘
compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。

re.match 尝试从字符串的起始位置匹配一个模式
group(num) groups() 匹配对象函数获取匹配表达式。



import re

print(re.match(‘www‘,"www.baidu.com").span()) # 在起始位置匹配


line = ‘cat are smarter than dogs‘
# .* 表示任意匹配除换行符(\n\r)之外的任何单个或多个字符
# 匹配括号内的表达式,也表示一个
# re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,
matchobj = re.match(r‘(.*) are (.*?) .*‘,line,re.M|re.I)
if matchobj:
print(matchobj.group())
print(matchobj.group(2))
else:
print("no match")
#re.search 扫描整个字符串并返回第一个成功的匹配。

#标志位,用于控制正则表达式的匹配方式
print(re.search(‘bai‘,‘wwww.baidu.com‘).span(),re.M|re.I)# (5,8)
print(re.search(‘du‘,‘wwww.baidu.com‘)) #<_sre.SRE_Match object; span=(8,10),match=‘du‘>




import re

line = ‘cat are smarter than dogs‘
matchobj = re.search(r‘dog‘,re.M|re.I)
print(matchobj.group(),matchobj.span()) #group() 返回匹配的字符串,span()返回位置

#检索和替换
re.sub用于替换字符串中的匹配项。
re.sub(pattern,repl,string,count=0,flags=0)

pattern: 正则中的模式字符串。
repl: 替换的字符串,也可为一个函数
string: 要被查找替换的原始字符串。
count: 模式匹配后替换的最大次数
0
表示替换所有的匹配。
flags: 编译时用的匹配模式,数字形式。



import re
phone = "2004-959-559 # 这是一个电话号码"
# 删除注释 phone num 2004-959-559
num = re.sub(r‘#.*$‘,‘‘,phone)
print("phone num",num)
# 移除非数字的内容 2004959559
num = re.sub(r‘\D‘,phone)
print(num)
#repl 参数是一个函数
# 将匹配的数字乘于 2
def double(matched):
value = int(matched.group(‘value‘))
return str(value*2)
s = ‘A23G4HFD567‘

print(re.sub(‘(?P<value>\d+)‘,double,s))
#compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() search() 这两个函数使用。
#re.complie(pattern,flag)

pattern: 一个字符串形式的正则表达式
flags
可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:
re.I 忽略大小写
re.L 表示特殊字符集 \w,\W,\b,\B,\s,\S 依赖于当前环境
re.M 多行模式
re.S 即为 ‘ . ‘ 并且包括换行符在内的任意字符(‘ . ‘ 包括换行符)
re.U 表示特殊字符集 \w,\d,\D,\S 依赖于 Unicode 字符属性数据库
re.X 为了增加可读性,忽略空格和
‘ # ‘ 后面的注释



import re

parttern = re.compile(r‘\d+‘)

m = parttern.match(‘onetwo12‘)
print(m)
m=parttern.match(‘onetwo12‘,6)
print(m) # m is <_sre.SRE_Match object; span=(6,8),match=‘12‘>
print(m.span(0))
#匹配以字母开头的单词
parttern = re.compile(r‘([a-z]+) ([a-z]+)‘,re.I)
m = parttern.match(‘Hello world wide wed‘)

print(m.span())

#findall在字符串中找到正则表达式所匹配的所有子串,并返回一个列表


parttern = re.compile(r‘\d+‘)
result1= parttern.findall(‘runoob 123 google 246‘)
result2 = parttern.findall(r‘run88oob234google456‘,6,10)
#start stop
print(result1)
print(result2)
#[‘123‘,‘246‘] [‘23‘]

# re.finditer 在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

it = re.finditer(r‘\d+‘,‘12ab34cd56ef‘)
print(type(it))
for match in it:
print(match) #<_sre.SRE_Match object; span=(0,2),match=‘12‘>
print(match.group())


#re.split 方法按照能够匹配的子串将字符串分割后返回列表
#加括号逗号也被单独分割出来 不加括号只分割单词
m=re.split(‘\W+‘,‘runoob,bookmark,hello‘)
m=re.split(‘(\W+)‘,‘ runoob,hello‘,2)#分隔次数maxsplit=1 分隔一次,认为 0,不限制次数
# 匹配括号内的表达式,也表示一个
print(m)



re.RegexObject

re.compile() 返回 RegexObject 对象。
re.MatchObject

group() 返回被 RE 匹配的字符串。

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...