Python之路,Day14 = Python基础14

  1 compile()
  2 match()
  3 search()
  4 findall()
  5
  6 m.group()  # 括号里面剋跟参数,表示打印里面(分组)的第几个元素(索引从1开始)   需要测试下
  7
  8
  9 a = re.compile(r'abc')     # 制作匹配规则
 10 a.search('abcdefghijk')    # a是一个对象
 11
 12 match   # 从第一个开始匹配
 13 findall  # 找出所有符合规则的
 14 search  # 从前往后开始寻找
 15
 16       元字符
 17 .       # 除换行符的任意字符
 18 \       # 转义字符
 19       # re 模块是 python 调用的一个 小型语言,如果 规则里面有 \\ 的话,
 20       # python 解释器在读取的时候,就会先把它转成 \ 去掉特殊意义,
 21       # 但是 re 里面还是需要转化 \ 的特殊意义,所以,需要 \\\\ 来使用
 22       # 经过 python 的时候,变成了 \\, 到 re 里面,就变成了 \;
 23 [...]   # 字符集合
 24
 25 \d      # 数字[0-9]
 26 \D      # 非数字[^0-9]
 27 \s      # 空白字符[<空格>\t\r\n\f\n]
 28 \S      # 非空白字符[^\s]
 29 \w      # 单字字符[A-Za-z0-9]
 30 \W      # 非单词字符[^\w]
 31
 32        数量词字符
 33 *       # 匹配前0个字符1次或者多次
 34 +       # 匹配前一个字符1次或者多次
 35 ?       # 匹配前一个字符0次或者1次
 36 {m}     # 匹配前一个字符m次
 37 {m,n}   # 匹配前一个字符m至n次
 38 数量词?# 变成非贪婪模式(默认为贪婪模式,尽可能的匹配多的次数)
 39
 40 ^
 41 '^[abc]'        # 以a或b或c开头的
 42 '[^abc]'        # 非a、b、c
 43
 44
 45         边界字符
 46 ^       # 匹配字符串开头,多行匹配每一行开头
 47     '^[abc]'        # 以a或b或c开头的
 48     '[^abc]'        # 非a、b、c
 49
 50 $       # 匹配字符串末尾,多行匹配每一行末尾
 51 \A      # 仅匹配字符串开头,注意转义字符
 52 \Z      # 仅匹配字符串末尾,注意转义字符
 53 \b      # 匹配\w和\W之间,注意转义字符
 54
 55
 56         逻辑、分组
 57 |       # 或
 58     ret = findall("www\.(?:\w+)\.(?:com|cn)")
 59             # findall  默认只显示 分组的信息(括号里面的), 加了 ?: 那么就取消优先级啊(打印所有)
 60             #  |  两个要用 括号 括起来
 61
 62 (...)   # 匿名分组
 63         a = re.compile('(a)b(c)')
 64         a.match('abcdefg')
 65         a.groups()      # 分组匹配。会打印出一个元组,符合规则a的为第一个元素,符合规则c的为第二个元素,如果后面的规则也有括号的话,依次变为元素
 66
 67
 68 (?P<name>...)       # 除了分组外还替该组制定一个 name 的别名
 69         p = re.compile('(?P<name>a)b(c)')
 70         a = p.match('abcdef')
 71         a.group('name')   # 可以把这个对应的元素取出来
 72         a.groups()
 73         a.groupdict()
 74
 75
 76 \<number>           # 引入编号为<number>的分组匹配到的字符串
 77         p = re.compile(r'(?<name>a)b(c)\1')    # 注意 1 前面的 \ ,不加 r ,会被当成转义字符,可以写两个 \
 78         # \1 像当与在这个位置引用了前面第一个的那个规则(分组里面的第一个),同样,不会被写入到分组中
 79         p.match('abcdef')
 80         a.groups()
 81         a.groupdict()
 82
 83
 84 (?P=name)           # 引用别名为<name>的分组匹配到的字符串
 85         p = re.compile('(?<name>a)b(c)(?P=name)')
 86         # (?P=name) 相当于在这个位置引用了前面那个 名字叫 name 的这个规则,虽然这里有括号,但是它只会匹配到,不会放入分组中
 87         p.match('abcdef')
 88         a.groups()
 89         a.groupdict()
 90
 91
 92
 93         特殊构造
 94 (?:...)         # (...) 不分组版本,虽然在括号里面,但是不进行分组
 95 (?#...)         # #号后面的内容将作为注释
 96 (?=...)         # 后面的限定词满足 ... 条件
 97         re.compile(r'a(?=\d)')        # 匹配前面是a,后面是数字的内容,得到的结果显示出a,不显示后面的数字
 98 (?!...)         # 后面的限定词不满足 ... 条件
 99 (?<=...)        # 前面的限定词满足 ... 条件
100 (?<!...)        # 前面的限定词不满足 ... 条件
101 (?(id/name) yes |no)        #
102                 # re.compile(r'(\d)?abc(?(1)\d|abc)')
103                     # 匹配规则为  (\d)?abc ,有分组;
104                     # (?(1)\d|abc) 前面 分组里面位置为 1 的规则,可以是数字,也可以是 abcdef
105
106
107             正则表达式开关
108 忽略大小写:
109     可以写成:re.compile(r'(?i)abc')
110     开关模式:re.compile(r'abc', re.I)       # 推荐
111
112
113 sub
114     p = re.compile(r'(\w) (\w)')
115     s = 'hi you, good boy'
116     print(p.sub(r'\2 \1', s)
117     >>> you hi, boy good

转载于:https://www.cnblogs.com/alwaysInMe/p/7082023.html

day26 re正则表达式相关推荐

  1. 传智 刘意 2015年Java基础视频-深入浅出精华版 笔记 day24~day26(2016年4月26日13:11:30)

    day24 1.多线程(JDK5之后的Lock锁的概述和使用)   Lock:           void lock(): 获取锁.           void unlock():释放锁.     ...

  2. 通过正则表达式校验手机号码,拿走即用!

    校验手机号码 2021/01/06更新,电信新增了191号段 1. 单纯校验长度 2.正则表达式校验数字 3.正则表达式校验是否是大陆号码 4.正则表达式校验是否是香港号码 //校验长度private ...

  3. Linux shell 学习笔记(15)— shell 正则表达式

    1. 定义 BRE 模式 1.1 纯文本 第一条原则就是:正则表达式模式都区分大小写.这意味着它们只会匹配大小写也相符的模式. $ echo "This is a test" | ...

  4. re2正则表达式匹配引擎的c接口版本cre2的中文使用手册

    前言 re2 官方地址: https://github.com/google/re2 cre2 官方地址: https://github.com/marcomaggi/cre2 1 基本类型定义 不透 ...

  5. 正则表达式(括号)、[中括号]、{大括号}的区别小结

    正则表达式(括号).[中括号].{大括号}的区别小结 </h1><div class="clear"></div><div class=& ...

  6. Python中正则表达式用法 重点格式以这个为准_首看_各种问题

    20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...

  7. 正则语法完全正则表达式手册_语法格式重点

    20211202 https://blog.csdn.net/lc11535/article/details/103266263 该表达式打开re.U(re.UNICODE)标志. python –& ...

  8. 正则表达式 - 语法

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

  9. 正则表达式中的\.表示什么意思

    \ 这是引用符,用来将这里列出的这些元字符当作普通的字符来进行匹配.例如正则表达式\$被用来匹配美元符号,而不是行尾,类似的,正则表达式\.用来匹配点字符,而不是任何字符的通配符.

最新文章

  1. poj1422(最小路径覆盖问题)
  2. 区块链是一种用一种不可变的形式存储数字信息
  3. 比特币耶稣Roger Ver赠送中国著名经济学家巴曙松1枚比特币现金BCH
  4. 6.3 Spring Boot集成mongodb开发
  5. FPGA之道(60)时空变换之空域优化
  6. 应用视觉设计_Day01
  7. 笔记-信息系统安全管理-信息系统安全技术体系
  8. 文档生成器 Xcode与Appledoc
  9. c语言中switch的用法是什么?
  10. mysql 字符,索引
  11. python字典的键设置条件格式_openpyxl条件格式设置数字格式
  12. java代码实现分页_Java分页实现(示例代码)
  13. ANSYS 有限元分析 坐标系/工作平面
  14. 史上最全股票指标图文详解
  15. 创业过程中技术真的那么重要吗
  16. 自定义修改elementUI组件样式(贯穿样式)
  17. Linux——vi/vim文本编辑器、用户管理、关机重启的相关命令
  18. ZigBee 3.0实战教程-Silicon Labs EFR32+EmberZnet:学习教程目录
  19. 【优化求解】基于遗传算法优化PARSEC 方法的翼型形状附matlab代码
  20. 人脸识别SVM算法实现--参考麦子学院彭亮机器学习基础5.2

热门文章

  1. 如何为windows服务添加安装程序(转)
  2. 与 Josh Bloch 探讨 Java 未来
  3. asp创建mysql表_asp创建数据库表
  4. FTP匿名登录或弱口令漏洞及服务加固
  5. MobaXterm使用
  6. Xshell 命令后台执行
  7. SharePoint 2010/SharePoint 2013 Custom Action: 基于Site Collection 滚动文字的通知.
  8. iOS将产品进行多语言发布,开发
  9. Hibenate工具类(实现增/删/改/查)
  10. vb破解万能断点816c24