#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的更多相关文章

  1. Python正则表达式re.search(r'\*{3,8}','*****')和re.search('\*{3,8}','*****')的匹配结果为什么相同?

    老猿做过如下测试: >>> re.search(r'\*{3,100}','*****') <re.Match object; span=(0, 5), match='**** ...

  2. python正则表达式--match search方法

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

  3. python正则表达式(4)--search方法

    1.re.search函数 re.search 扫描整个字符串并返回第一个成功的匹配,如果匹配失败search()就返回None. (1)函数语法: re.search(pattern, string ...

  4. Python正则表达式(总)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6445044.html 本文出自:[Edwin博客园] Python正则表达式(总) search(patte ...

  5. Python正则表达式re模块学习遇到的问题

    Python正则表达式处理的组是什么? Python正则表达式处理中的匹配对象是什么? Python匹配对象的groups.groupdict和group之间的关系 Python正则表达式re.mat ...

  6. python正则表达式基础,以及pattern.match(),re.match(),pattern.search(),re.search()方法的使用和区别

    正则表达式(regular expression)是一个特殊的字符序列,描述了一种字符串匹配的模式,可以用来检查一个字符串是否含有某种子字符串. 将匹配的子字符串替换或者从某个字符串中取出符合某个条件 ...

  7. Learning Python 008 正则表达式-003 search()方法

    Python 正则表达式 - search()方法 findall()方法在找到第一个匹配之后,还会继续找下去,findall吗,就是找到所有的匹配的意思.如果你只是想找到第一个匹配的信息后,就不在继 ...

  8. Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...

  9. Python 正则表达式入门(初级篇)

    Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. 转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达 ...

随机推荐

  1. JAVA 泛型 - Class<T>

    Class 类 Class 已经泛型化了,但是很多人一开始都感觉其泛型化的方式很混乱.Class 中类型参数 T 的含义是什么?事实证明它是所引用的类接口.怎么会是这样的呢?那是一个循环推理?如果不是 ...

  2. R语言parse函数与eval函数的字符串转命令行及执行操作

    parse()函数能将字符串转换为表达式expression:eval()函数能对表达式求解 A <- : B <- 'print(A)' class(B) C <- parse(t ...

  3. 《Java核心技术卷I》——第3章 Java的基本程序设计结构

    byte和short类型主要用于特定的应用场合,例如,底层的文件处理或者需要控制占用存储空间量的大数组. 十六进制数值有一个前缀0x(如0xCAFE),八进制有一个前缀0,如010对应八进制中的8.很 ...

  4. 2019 计蒜之道 初赛 第二场 B. 百度AI小课堂-上升子序列(简单) ( 实现)

    题目背景 ​91029102 年 99 月 22 日,百度在 X 市 XX 中学举办的第一场 AI 知识小课堂大获好评!同学们对矩阵的掌握非常棒. 今天的 AI 知识小课堂的第二场开讲啦.本场 AI ...

  5. fhq_treap || BZOJ 3223: Tyvj 1729 文艺平衡树 || Luogu P3391 【模板】文艺平衡树(Splay)

    题面: [模板]文艺平衡树(Splay) 题解:无 代码: #include<cstdio> #include<cstring> #include<iostream> ...

  6. ASP.NET Core 基础知识(三) Program.cs类

    ASP.NET Framework应用程序是严重依赖于IIS的,System.Web 中有很多方法都是直接调用的 IIS API,并且它还是驻留在IIS进程中的.而 ASP.NET Core 的运行则 ...

  7. computed 与methods , watched 的区别

    computed 与watched 的区别: 异步请求 数据变化 使用watched ,计算属性不支持异步 计算一个值的结果 用 computed computed 与methods的区别: comp ...

  8. axios 各种请求方式传递参数

    get delete 方法较为不同 注意:每个方法的传参格式不同,具体用法看下方 get请求方式将需要入参的数据作为 params 属性的值,最后整体作为参数传递 delete请求方式将将需要入参的数 ...

  9. 进程队列补充、socket实现服务器并发、线程完结

    目录 1.队列补充 2.关于python并发与并行的补充 3.TCP服务端实现并发 4.GIL全局解释器锁 什么是保证线程安全呢? GIL与Lock 5.验证多线程的作用 对结论的验证: 6.死锁现象 ...

  10. 自动配置/切换/查看JDK环境变量

    最近老是需要几个版本的JDK切换工作,于是网上收集资料整理,自己写了一个:自动配置/切换/查看JDK环境变量的批处理脚本.顺带3个JDK版本分别是:jdk1.6.0_43,jdk1.7.0_80,jd ...