python正则一篇搞掂

正则表达式一、概述1. 概念正则表达式是对字符串操作的一种逻辑公式 , 就是用事先定义好的一些特定字符、及这些特定字符的组合 , 组成一个“规则字符串” , 这个“规则字符串”用来表达对字符串的一种过滤逻辑 。
2. 目的给定一个正则表达式和另一个字符串 , 我们可以达到如下的目的:

  • a. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
  • 例如:邮箱匹配 , 电话号码匹配
  • b. 可以通过正则表达式 , 从字符串中获取我们想要的特定部分 。
  • 爬虫中解析 html 数据
  • 3. 特点:
  • a. 灵活性、逻辑性和功能性非常的强;
  • b. 可以迅速地用极简单的方式达到字符串的复杂控制 。
  • c. 对于刚接触的人来说 , 比较晦涩难懂 。
  • 4. 学习方法
  • a. 做好笔记 , 不要死记硬背
  • b. 大量练习
Python/ target=_blank class=infotextkey>Python 中通过系统库 re 实现正则表达式的所有功能
二、正则表达式符号1. 普通字符下面的案例使用 re 模块的 findall() 函数 , 函数参考如下:
    •  
    re.findall(pattern, string, flag)
    • 在字符串中找到正则表达式所匹配的所有子串 , 并返回列表 , 如果没有找到返回空列表
    • pattern: 正则表达式
    • string:被匹配的字符串
    • flag:标志位用来控制正则表达式匹配方式
在最简单的情况下 , 一个正则表达式看上去就是一个普通的查找串
 import res1 = "testing123"s2 = "Testing123"r = re.findall("test", s1)# 表示在s1中找到字符串"test"print(r) 运行结果:
['test'] r = re.findall("test", s2)print(r)  运行结果:
[]r = re.findall("test", s2, re.I) # 修饰符re.I:使匹配对大小写不敏感print(r)运行结果:
['Test']2. 元字符. ^ $ * + ? { } [ ] | ( ) 符号功能 .通配符 . 匹配除 n 之外的任何单个字符^脱字符 ^ 匹配输入字符串的开始位置$美元符 $ 匹配输入字符串的结束位置*重复元字符 * 匹配前面的子表达式任意次+重复元字符 + 匹配前面的子表达式一次或多次(至少一次)?重复元字符 ? 匹配前面的子表达式 0 次或 1 次{}重复元字符{}也是控制匹配前面的子表达式次数[ ]字符组 []表示匹配给出的任意字符|选择元字符 `( )分组元字符 ()将括号之间的表达式定义为组(group) , 并且将匹配这个子表达式的字符返回转义元字符  用来匹配元字符本身时的转义 , 和特定字符组成字符串 , 见预定义字符组 2.1 通配符 .匹配除 n 之外的任何单个字符
s1 = "testing123"s2 = "testing123n"r = re.findall(".", s1)print(r)
运行结果:
['t', 'e', 's', 't', 'i', 'n', 'g', '1', '2', '3']r = re.findall(".", s2)# 除“n”print(r)运行结果:
['t', 'e', 's', 't', 'i', 'n', 'g', '1', '2', '3']修饰符 re.S 使 . 匹配包括换行在内的所有字符
r = re.findall(".", s2, re.S)print(r) 运行结果:
['t', 'e', 's', 't', 'i', 'n', 'g', '1', '2', '3', 'n']2.2 脱字符 ^匹配输入字符串的开始位置
s1 = "testingnTestingntest"r = re.findall("^test", s1)# 默认只匹配单行


推荐阅读