欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

s21day25 python笔记

程序员文章站 2022-07-02 17:06:01
s21day25 python笔记 正则表达式 1.定义 定义:正则表达式是一种规则匹配字符串的规则 re模块本身只是用来操作正则表达式的,和正则本身没关系 为什么要有正则表达式? 匹配字符串 一个人的电话号码 一个人的身份证号 一台机器的ip地址 表单验证 验证用户输入的信息是否准确 银行卡号 爬 ......

s21day25 python笔记

正则表达式

1.定义

  • 定义:正则表达式是一种规则匹配字符串的规则
  • re模块本身只是用来操作正则表达式的,和正则本身没关系
  • 为什么要有正则表达式?
    • 匹配字符串
      • 一个人的电话号码
      • 一个人的身份证号
      • 一台机器的ip地址
    • 表单验证
      • 验证用户输入的信息是否准确
      • 银行卡号
    • 爬虫
      • 从网页源码中获取一些链接、重要数据

2.正则规则

  • 第一条规则 : 本身是哪一个字符,就匹配字符串中的哪一个字符
  • 第二条规则 : 字符组[字符1字符2],一个字符组就代表匹配一个字符,只要这个字符出现在字符组里,那么就说明这个字符能匹配上
    • 字符组中还可以使用范围
    • 所有的范围都必须遵循ascii码从下到大来指定
    • 常用:[0-9] [a-z] [a-z]

3.元字符

  • \d:表示所有的数字
    • \是转义符 转义符转义了d,让d能够匹配所有0-9之间的数
  • \w:表示大小写字母、数字、下划线
  • \s:表示空白、空格、换行符、制表符
  • \t:匹配制表符
  • \n:匹配换行符
  • \d:表示所有的非数字
  • \w:表示除数字、字母、下划线之外的所有字符
  • \s:表示非空白
  • . :表示除了换行符之外的任意内容
  • [] 字符组:只要在中括号内的所有字符都是符合规则的字符
  • [^ ]非字符组:只要在中括号内的所有字符都是不符合规则的字符
  • ^:表示一个字符的开始
  • $:表示一个字符的结束
  • |:表示或
    • 注意:如果两个规则有重叠部分,总是长的在前面,短的在后面
  • ():表示分组,给一部分正则规定为一组,|这个符号的作用域就可以缩小了
  • 特殊:
    • [\d]、[0-9]、\d:没有区别 都是要匹配一位数字
    • [\d\d]、[\w\w]、[\s\s] 匹配所有一切字符

4.量词

  • {n}:表示只能出现n次
  • {n,}:表示至少出现n次
  • {n,m}:表示至少出现n次,至多出现m次
  • ?:表示匹配0次或1次,表示可有可无,但是有只能有一个,比如小数点
  • +:表示匹配1次或多次
  • *:表示匹配0次或多次,表示可有可无,但是有可以有多个比如小数点后n位
  • 匹配0次出现的情况:
    • 匹配任意的保留两位小数的数字
    • 匹配一个整数或者小数

5.贪婪匹配

  • 默认贪婪匹配,总是会在符合量词条件的范围内尽量多匹配
  • 非贪婪匹配 :惰性匹配
    • 总是匹配符合条件范围内尽量小的字符串
    • 格式:元字符 量词 ? x
      • 表示按照元字符规则在量词范围内匹配,一旦遇到x就停止
      • 示例:.*?x 匹配任意的内容任意多次遇到x就立即停止