re模块 之分组

>>> import re
>>> re.findall("ab|c","sdfab|csdf")
['ab', 'c']
>>> re.findall("ab|cd","sdfab|cdsdf")
['ab', 'cd']
>>> re.findall ("abc+","abccccc")
['abccccc']
>>> re.findall ("abc*","abccccc")
['abccccc']
>>> re.findall("(abc)+","abcabcabcabc") # 分组
['abc']
>>> re.findall ("(abc)*","abcabcabcabc")
['abc', '']
>>> re.findall ("abc+","abcabcabcabcabc")
['abc', 'abc', 'abc', 'abc', 'abc']

search分组用法 (只返回一个对象)

>>> re.search("(?P<name>\w+)","abcccc")
<re.Match object; span=(0, 6), match='abcccc'>
>>> re.search("(?P<name>\w+)","abcccc").group()
'abcccc'

根据组名称 提取内容

>>> re.search("(?P<name>[a-z]+)\d+","john18musicxiaoming20movie").group("name")
'john'
>>> re.search("(?P<name>[a-z]+)(?P<age>\d+)","john18musicxiaoming20movie").group("age")
''
>>>

re模块的其他常用方法

>>> re.match("\d+","44safs45asdf321saf789").group()       # 只取一个对象,只能取开头的
''
>>> re.split(" ","hello world") # 按空格为分界线取
['hello', 'world']
>>> re.split("[ |]","hello world|aaa")
['hello', 'world', 'aaa']
>>> re.split("[ab]","safdbds") # 按 a b 为分界线取
['s', 'fd', 'ds']

--替换

>>> re.sub("\d+","A","a1sd4fg45h")
'aAsdAfgAh'
>>> re.sub("\d","A","a1sd4fg45h")
'aAsdAfgAAh'
>>> re.sub("\d+","A","a1sd4fg45h",2)
'aAsdAfg45h'
>>> a = re.compile ("\d+")         # 定义规则
>>> a.findall("safsd12a45") # 直接调用 (可以调用多次)
['', '']
>>> re.finditer ("\d+","asfa45saf56")         # 将数字放到迭代器内存里
<callable_iterator object at 0x00000220B1E50E80>

获取里面的内容

>>> b = re.finditer ("\d+","asfa45saf56")
>>> next(b)
<re.Match object; span=(4, 6), match=''>
>>> next(b)
<re.Match object; span=(9, 11), match=''>

优先级

>>> re.findall("www\.(baidu|123)\.com","www.baidu.com")
['baidu']
>>> re.findall("www\.(?:baidu|123)\.com","www.baidu.com") # ‘ ?:’去掉优先级
['www.baidu.com']

最新文章

  1. StartUML反向(逆向)Java工程通过代码生成类图
  2. session 丢失和解决方案
  3. react.js CMS 删除功能的实现
  4. C# 时间与时间戳互转 13位
  5. JS下高效拼装字符串的几种方法比较与测试代码
  6. [改善Java代码] 推荐使用序列化实现对象的拷贝
  7. MFC中快速应用OpenCV(转)
  8. c++实现二分查找
  9. [JBoss] JNDI与JBossNS
  10. [csdn markdown]使用摘记一源代码高亮及图片上传和链接
  11. ProgressDialog替代
  12. 小程序block标签配合if和else 和 动态修改标题栏
  13. leetcode-48.旋转图像
  14. js04-DOM对象一
  15. H5 60-浮动元素排序规则
  16. 初学c# -- 纯属无聊,写下棋
  17. bzoj3277
  18. vitas高音
  19. What mind mapping software applications do you recommend.
  20. Linux开启和关闭防火墙

热门文章

  1. FCN笔记
  2. http与https区别,get与post请求区别
  3. 元素在当前窗口可视的区域---Element.scrollIntoView()
  4. com.mysql.cj.jdbc.Driver 新特性jdbc.url连接供参考
  5. RK3399 pro 开发记录
  6. Android日期操作
  7. 小D课堂 - 零基础入门SpringBoot2.X到实战_第7节 SpringBoot常用Starter介绍和整合模板引擎Freemaker、thymeleaf_28..SpringBoot Starter讲解
  8. php 判断图片文件的真实类型
  9. Java基础 switch 表达式为字符串
  10. (转)golang获取当前时间、时间戳和时间字符串及它们之间的相互转换