确实是实践出真知,自己手打代码之后,以前停在理论上的东东,慢慢可以进入实战了。

比如,MATCH和SEARCH之间的区别。

#encoding: UTF-8
import re

pattern = re.compile(r'hello')
match = pattern.match('hello world!')
if match:
    print match.group()

pattern2 = re.compile(r'world')
match2 = pattern2.search('hello world.')
if match2:
    print match2.group()

pattern3 = re.compile(r'\d+')
re_string = 'one1two2three3four4'
print pattern3.split(re_string)
print pattern3.findall(re_string)
for i in pattern3.finditer(re_string):
    print i.group(),
print

m = re.match(r'(\w+) (\w+)(?P<sign>.*)','hello world!!')
print "m.string:",m.string
print "m.re:",m.re
print "m.pos:",m.pos
print "m.endpos:",m.endpos
print "m.lastindex:",m.lastindex
print "m.lastgroup:",m.lastgroup

print "m.group(1,2):",m.group(1,2)
print "m.groups():",m.groups()
print "m.groupdict():",m.groupdict()
print "m.start(2):",m.start(2)
print "m.end(2):",m.end(2)
print "m.span(2):",m.span(2)
print r"m.expand(r'\2 \1 \3'):",m.expand(r'\2 \1\3')

p = re.compile(r'(\w+) (\w+)(?P<sign>.*)', re.DOTALL)

print "p.pattern:", p.pattern
print "p.flags:", p.flags
print "p.groups:", p.groups
print "p.groupindex:", p.groupindex

p2 = re.compile(r'(\w+) (\w+)')
s2 = 'i say, hello world!'

print p2.sub(r'\2 \1', s2)
print p2.subn(r'\2 \1', s2)

def func(m):
    return m.group(1).title() + ' ' + m.group(2).title()

print p2.sub(func, s2)
print p2.subn(func, s2)

>>> ================================ RESTART ================================
>>>
hello
world
['one', 'two', 'three', 'four', '']
['1', '2', '3', '4']
1 2 3 4
m.string: hello world!!
m.re: <_sre.SRE_Pattern object at 0x00000000029F9A70>
m.pos: 0
m.endpos: 13
m.lastindex: 3
m.lastgroup: sign
m.group(1,2): ('hello', 'world')
m.groups(): ('hello', 'world', '!!')
m.groupdict(): {'sign': '!!'}
m.start(2): 6
m.end(2): 11
m.span(2): (6, 11)
m.expand(r'\2 \1 \3'): world hello!!
p.pattern: (\w+) (\w+)(?P<sign>.*)
p.flags: 16
p.groups: 3
p.groupindex: {'sign': 3}
say i, world hello!
('say i, world hello!', 2)
I Say, Hello World!
('I Say, Hello World!', 2)
>>>

最新文章

  1. WPF整理-跨程序集访问资源
  2. call与apply基础用法告诉你
  3. python set集合简单使用
  4. SpringMVC整合TaskExecutor线程池的配置/使用
  5. Codeforces Round #358 (Div. 2)B. Alyona and Mex
  6. 转载 C#中使用结构来传递多个参数
  7. hadoop笔记之hdfs
  8. perf学习-linux自带性能分析工具
  9. 【递推】Bzoj3612[Heoi2014]平衡
  10. 如何扩展分布式日志组件(Exceptionless)的Webhook事件通知类型?
  11. bootstrap4的出现(或这篇文章可以叫做bs4与bs3的区别)
  12. CentOS7安装MySQL并设置远程登录
  13. nginx file not found 错误处理小记
  14. 菜鸟vimer成长记——第2.1章、normal模式
  15. css修改input自动提示的黄色背景
  16. redis持久化的两种方式
  17. Centos75下samba搭建配置
  18. VS2013打开项目 提示Asp.net4.5未在web服务器上注册 F5运行 启动不来 权限
  19. TVS
  20. jedis使用管道(pipeline)对redis进行读写(使用hmset、hgetall测试)

热门文章

  1. String源码
  2. 【转】Android:Touch事件分发机制
  3. Eclipse自动插件依赖的一种配置解决方式
  4. CSS3之渐变Gradient
  5. Linux crontab 命令详解(含配置文件路径)
  6. mysql 变量is null 和 not exists区别
  7. [转] PostgreSQL学习手册(函数和操作符)
  8. [转] Python 模块学习:os模块
  9. MSSQL row_number简单使用语法
  10. sharepoint查询超出阈值