python 正则表达式 re.search
#coding:utf-8
import re #将正则表达式编译为pattern对象
#compile(pattern, flags=0)
#Compile a regular expression pattern, returning a pattern object.
pattern = re.compile(r'sub2020')
#help(re.match) Try to apply the pattern at the start of the string
#match 从 str 的开始(0 位置)查找匹配,如果没有,返回none
#help(re.search) Scan through string looking for a match to the pattern
#search 扫描整个 str
match =re.search(pattern,'http://www.cnblogs.com/sub2020/p/7920845.html') if match:
#使用match获得group信息
print match.group() m=re.search(r'(\w+)(\w+)(\w+)(\d+)(\d+)(\d+)(\d+)','http://www.cnblogs.com/sub2020/p/7920845.html') #string: 匹配时使用的文本。
print 'm.string :',m.string
#re: 匹配时使用的Pattern对象
print 'm.re :',m.re
#pos: 文本中正则表达式开始搜索的索引。值与Pattern.match()
# 和Pattern.seach()方法的同名参数相同。
print 'm.pos :',m.pos
#endpos: 文本中正则表达式结束搜索的索引。值与Pattern.match()
# 和Pattern.seach()方法的同名参数相同。
print 'm.endpos :',m.endpos
#lastindex: 最后一个被捕获的分组在文本中的索引。
# 如果没有被捕获的分组,将为None。
print 'm.lastindex :',m.lastindex
#lastgroup: 最后一个被捕获的分组的别名。
# 如果这个分组没有别名或者没有被捕获的分组,将为None。
print 'm.lastgroup :',m.lastgroup
#.group([group1, …]):获得一个或多个分组截获的字符串;
# 指定多个参数时将以元组形式返回。group1可以使用编号也可以使用别名;
# 编号0代表整个匹配的子串;不填写参数时,返回group(0);
# 没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串。
print 'm.group() :',m.group()
print 'm.group(1,2) :',m.group(1,2)
print 'm.group(1, 2) :',m.group(1, 2)
#groups([default]):以元组形式返回全部分组截获的字符串。
# 相当于调用group(1,2,…last)。default表示没有截获字符串的组以这个
# 值替代,默认为None。
print 'm.groups() :',m.groups()
print 'm.groups(3) :',m.groups(3)
#groupdict([default]):返回以有别名的组的别名为键、以该组截获的子串
# 为值的字典,没有别名的组不包含在内。default含义同上。
print 'm.groupdict() :',m.groupdict()
#start([group]):返回指定的组截获的子串在string中的起始索引
#(子串第一个字符的索引)。group默认值为0。
print 'm.start(2) :',m.start(2)
print 'm.start(3) :',m.start(3)
#end([group]):返回指定的组截获的子串在string中的结束索引
#(子串最后一个字符的索引+1)。group默认值为0。
print 'm.end(2) :',m.end(2)
print 'm.end(3) :',m.end(3)
#span([group]):返回(start(group), end(group))。
print 'm.span(1) :',m.span(1)
print 'm.span(2) :',m.span(2)
#expand(template):将匹配到的分组代入template中然后返回。
# template中可以使用\id或\g、\g引用分组,但不能使用编号0。
# \id与\g是等价的;但\10将被认为是第10个分组,如果你想表达\1之后是字符’0’,
# 只能使用\g0。
print r"m.expand(r'\g') 1:",m.expand(r'\1')
print r"m.expand(r'\g') 2:",m.expand(r'\2')
print r"m.expand(r'\g') 3:",m.expand(r'\3') print r"m.expand(r'\g \g\g') :",m.expand(r'\2 \2\2')
print r"m.expand(r'\g \g\g') :",m.expand(r'\2 \1\3')
Output:
sub2020
m.string : http://www.cnblogs.com/sub2020/p/7920845.html
m.re : <_sre.SRE_Pattern object at 0x0000000001D08810>
m.pos : 0
m.endpos : 45
m.lastindex : 7
m.lastgroup : None
m.group() : sub2020
m.group(1,2) : ('s', 'u')
m.group(1, 2) : ('s', 'u')
m.groups() : ('s', 'u', 'b', '', '', '', '')
m.groups(3) : ('s', 'u', 'b', '', '', '', '')
m.groupdict() : {}
m.start(2) : 24
m.start(3) : 25
m.end(2) : 25
m.end(3) : 26
m.span(1) : (23, 24)
m.span(2) : (24, 25)
m.expand(r'\g') 1: s
m.expand(r'\g') 2: u
m.expand(r'\g') 3: b
m.expand(r'\g \g\g') : u uu
m.expand(r'\g \g\g') : u sb ***Repl Closed***
quote:http://cuiqingcai.com/977.html
python 正则表达式 re.search的更多相关文章
- Python正则表达式re.search(r'\*{3,8}','*****')和re.search('\*{3,8}','*****')的匹配结果为什么相同?
老猿做过如下测试: >>> re.search(r'\*{3,100}','*****') <re.Match object; span=(0, 5), match='**** ...
- python正则表达式--match search方法
1.re.match函数 re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回None. (1)函数语法: re.match(pattern, st ...
- python正则表达式(4)--search方法
1.re.search函数 re.search 扫描整个字符串并返回第一个成功的匹配,如果匹配失败search()就返回None. (1)函数语法: re.search(pattern, string ...
- Python正则表达式(总)
转载请标明出处: http://www.cnblogs.com/why168888/p/6445044.html 本文出自:[Edwin博客园] Python正则表达式(总) search(patte ...
- Python正则表达式re模块学习遇到的问题
Python正则表达式处理的组是什么? Python正则表达式处理中的匹配对象是什么? Python匹配对象的groups.groupdict和group之间的关系 Python正则表达式re.mat ...
- python正则表达式基础,以及pattern.match(),re.match(),pattern.search(),re.search()方法的使用和区别
正则表达式(regular expression)是一个特殊的字符序列,描述了一种字符串匹配的模式,可以用来检查一个字符串是否含有某种子字符串. 将匹配的子字符串替换或者从某个字符串中取出符合某个条件 ...
- Learning Python 008 正则表达式-003 search()方法
Python 正则表达式 - search()方法 findall()方法在找到第一个匹配之后,还会继续找下去,findall吗,就是找到所有的匹配的意思.如果你只是想找到第一个匹配的信息后,就不在继 ...
- Python 正则表达式入门(中级篇)
Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...
- Python 正则表达式入门(初级篇)
Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. 转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达 ...
随机推荐
- Python multiprocessing使用详解
multiprocessing包是Python中的多进程管理包. 与threading.Thread类似,它可以利用multiprocessing.Process对象来创建一个进程. 该进程可以运行在 ...
- 隐藏系统和 Apache 的版本信息
方法一: ※首先修改源文件,再进行 make && make install 编译安装 编辑源文件/usr/local/apache2/include/ap_release.h 文件 ...
- Linux学习--第六天--软件包
yum在线管理 管理的是rpm包,光盘里面都有 /etc/yum.repos.d下面有四个文件,对应网络yum源,光盘yum源等.如果需要用到哪个源,将其他三个源的enabled设置为0即可. |源配 ...
- 神经风格转换 (Neural-Style-Transfer-Papers)
原文:https://github.com/ycjing/Neural-Style-Transfer-Papers Neural-Style-Transfer-Papers Selected pape ...
- AtomicReference和AtomicStampedReference
AtomicReference类提供了一个可以原子读写的对象引用变量. 原子意味着尝试更改相同AtomicReference的多个线程(例如,使用比较和交换操作)不会使AtomicReference最 ...
- 4--面试总结-promise
promise异步原理: 定义:promise是异步编程的解决方案,可以解决异步回调地狱的问题: 原理:三种状态两种结果的一个状态机:三种状态(pending,fulfilled,rejected)两 ...
- 【GDOI2014模拟】服务器
前言 直到比赛最后几分钟,才发现60%数据居然是一个水dp,结果没打完. 题目 我们需要将一个文件复制到n个服务器上,这些服务器的编号为S1, S2, -, Sn. 首先,我们可以选择一些服务器,直接 ...
- 【bzoj 4554】【Tjoi2016&Heoi2016】【NOIP2016模拟7.12】游戏
题目 分析 当没有石头的时候,就用二分图匹配来做. 但现在加入了石头, 所以,求出每行和每列联通快的个数,如果有一块平地,包括在某个行联通块以及某个列联通块中,连边. //无聊打了网络流,匈牙利也可以 ...
- CSS3——制作带动画效果的小图片
下了一个软件:ScreenToGif用来截取动态图片,终于可以展示我的小动图啦,嘻嘻,敲开心! main.html <!DOCTYPE html> <html lang=" ...
- js数字每3位加一个逗号
if(typeof val ==="number"){ var str = val.toString(); ? /(\d)(?=(\d{})+\.)/g : /(\d)(?=(?: ...