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']

python学习-54 正则表达式2的更多相关文章

  1. [Python学习笔记]正则表达式总结

    常用缩写字符及其含义表格查询 缩写字符分类 含义 \d 0-9的任意数字 \D 除0-9的数字以外的任何字符 \w 任何字母.数字或下划线字符(可以认为是匹配"单词"字符) \W ...

  2. Python学习 之 正则表达式

    1.简单的正则表达式 import re s=r'abc' re.findall(s,"aaaaaaaaaaaaaaa") #结果为[] re.findall(s,"ab ...

  3. Python学习笔记——正则表达式入门

    # 本文对正则知识不做详细解释,仅作入门级的正则知识目录. 正则表达式的强大早有耳闻,大一时参加一次选拔考试,题目就是用做个HTML解析器,正则的优势表现得淋漓尽致.题外话不多讲,直接上干货: 1. ...

  4. Python学习--16 正则表达式

    正则表达式是一种描述性的语言,用来匹配字符串.凡是符合规则的字符串,我们认为就是匹配了. 正则表达式并非Python独有的,它与语言无关.很多语言都支持正则表达式. 我们经常用正则表达式来匹配电子邮件 ...

  5. python学习日记(正则表达式)

    定义 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Pyth ...

  6. python学习笔记----正则表达式

    正则: regular expression 常用的场景: #正则的包 >>> import re #match:开头匹配,匹配到,返回一个匹配对象,否则返回None >> ...

  7. python学习笔记——正则表达式regex

    1 概述 1.1 定义 本质是由一系列字符和特殊符号组成的字串,用来表示一定规则的某一类字符串. 1.2 特点 正则表达式是一个独立的技术,其在多种编程语言中使用. 在python语言中的正则表达式模 ...

  8. Python学习 :正则表达式

    正则表达式 python 使用正则表达式(re)来进行匹配引擎搜索 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串” 关于正则表达式 ...

  9. python 学习总结----正则表达式

    正则表达式 应用场景 - 特定规律字符串的查找,切割,替换 - 邮箱格式:URl,IP地址等的校验 - 爬虫项目中,特定内容的提取 使用原则 - 只要使用字符串等函数能解决的问题,就不要使用正则 - ...

随机推荐

  1. 【caffe I/O】数据读取层 代码中文注释

    caffe.proto中DataParameter部分 message DataParameter { //输入数据使用的DB类型 enum DB { LEVELDB = ;//使用LEVELDB L ...

  2. 关于hexo与github使用过程中的问题与笔记

    快速阅读 如何用github 和hexo 创建一个blog 1.github中要新建一个与用户名同一样的仓库, 如:homehe.github.io - 必须是io后缀.一个帐户 只能建立一个 2. ...

  3. QT中显示动画

    在QT中要显示GIF图片,不能通过单单的添加部件来完成.还需要手动的编写程序.工具:QT Creator新建一个工程,我们先在designer中,添加一个QLabel部件. 将QLabel拉成适当大小 ...

  4. Android 关于selector中item顺序的问题

    selector的item从上到下是按照匹配原则来改变状态的,一旦匹配到某个item的状态,就不会继续往下匹配了. https://blog.csdn.net/l403040463/article/d ...

  5. fastjson字段顺序问题

    构造函数中指定使用有序 public JSONObject(boolean ordered) { this(16, ordered);} 示例: JSONObject fastJson = new J ...

  6. MySQL not equal to operator <> && !=

    MySQL :: MySQL 5.7 Reference Manual :: 12.3.2 Comparison Functions and Operatorshttps://dev.mysql.co ...

  7. [转载]IBM公司发布了最新的power7服务器p750 p770 p780

    [转载]IBM公司发布了最新的power7服务器p750 p770 p780 (2015-06-11 12:54:17) 转载▼ http://blog.sina.com.cn/s/blog_6f52 ...

  8. java泛型--问号?和T或E或K或V的区别

    所谓泛型,就是在定义类.接口.方法.参数或成员变量的时候,指定它们操作对象的类型为通用类型. 使用 尖括号 <> 操作符 (The diamond operator )表示泛型, 尖括号内 ...

  9. linux安装qt

    1.下载run文件 2../运行 3.修改配置文件 sudo gedit /etc/profile 添加如下: port QTDIR=/home/rainbow/zhuxy/soft/Qt5.9.0/ ...

  10. Jmeter性能测试实战教程系列-搭建分布式性能测试环境(五)

    Jmeter 是java 应用,对于CPU和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误.为了让jmeter工具 ...