返回顶部

正则表达式

#事先说一下
- re模块本身是用来操作正则表达式,与正则本身没有关系
- 正则表达式是指一规则,匹配字符串的规则

1.正则表达式regex

  • 正则表达式regex是指一规则,匹配字符串的规则,应用:
    • 匹配字符串
    • 表单验证
    • 爬虫:从网页源码获取一些链接,重要数据
  • 元字符
  • 量词

1.规则

​ 1.1 基本匹配: 本身是哪一个字符,就匹配字符换中的哪一个字符

​ 1.2 字符组匹配[字符1字符2]规则: 一个字符组就匹配一个字符,只要这个字符出现在字符组内就会被匹配到

  • 字符组可以使用范围,所有的范围必须遵循ascii码从小到大来指定
  • 常用字符组范围[0-9]/[a-z]/[A-Z]/[a-zA-Z0-9]

​ 1.3 [0-9]==\d 所有的数字

​ 1.4 \d 与 [0-9] 与 [\d]无区别

2.元字符

  • []字符组 只要在中括号之内的所有字符都符合匹配规则
  • [^]非字符组 只要在中括号之内的所有字符都符合匹配规则
  • \d 数字(digit)
  • \w 标识符(word)表示大小写字母,数字,下划线
  • \s 空格(space),表示空格,换行符,table制表符
  • \t (table) 仅仅制表符
  • \n (next) 仅仅换行符
  • \D 匹配非数字
  • \w 匹配非大小写字母,数字,下划线
  • \S 匹配非空格,换行符,table
  • . 表示除了换行符的任意内容
  • \取消转义, \ .表示只匹配 .
  • [\d\D] 匹配任意字符
  • 表示一个字符的开始:s表示只匹配开头的s
  • $表示一个字符的结束:$e表示只匹配结束的e
  • ^abc$ 同时出现字符串只能是abc
  • | 表示或,注意如果两个规则有重叠部分,总是长的在前面,短的在后面
  • (|)括号限制|的作用域, 例 :www.(baidu|google).com,只会作用域括号内
#帮助记忆#
\d \w \s \t(table) \n(next)
\D \W \S
.
[]   [^]
^    $
|   ()

3.量词

  • \d{n} 数字n表示该原字符执行次数,且只能匹配这么多次

  • \d{n,}数字n表示该原字符至少出现n次

  • \d{n,m}数字n表示该原字符至少出现n次,至多出现m次

  • \d? ?表示匹配0次或者1次 ,比如小数点

  • \d+ +表示匹配1次或多次

  • \d * *表示匹配0次或多次 ,比如匹配整数或者小数

  • 匹配小数

    \d+(\.\d+)?
    #例:
    12.3432
    

3.1 默认贪婪匹配 ,总是在符合匹配规则的范围内尽可能多的匹配

3.2 非贪婪匹配,(惰性匹配):总是在符合匹配规则的范围内尽可能少的匹配

  • 元字符 量词 ? x

    表示按照元字符规则在量词范围内匹配,一旦遇到x就停止

    • .*?x 匹配任意字符,碰见x立即停止.
  • ? 出现在量词之后表示非贪婪匹配

身份证小练习
# 身份证号
# 15位  全数字 首位不为0
# 18位  前17位全数字 首位不为0  最后一位可能是x和数字
[1-9](\d{14}|\d{16}(\d|x))
[1-9](\d{16}[\dx]|\d{14})
[1-9]\d{14}(\d{2}[\dx])?
posted @ 2019-04-30 16:17  高薪程序员  阅读(190)  评论(0编辑  收藏  举报