前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python正则表达式从入门到实践(1)

Python正则表达式从入门到实践(1)

作者头像
披头
发布2020-06-11 09:49:00
4620
发布2020-06-11 09:49:00
举报
文章被收录于专栏:datartisan

正则表达式regular expression用于描述一种字符串匹配的模式pattern,它可用于检查一个字符串是否包含某个子字符串,也可用于从字符串中提取匹配的子字符串,或者对字符串中匹配的子字符串进行替换操作。

Python正则表达式常用于进行数据清洗、数据抓取、网络爬虫等工作,能达到事半功倍的效果,非常值得学习。

正则表达式的构成元素

正则表达式由普通字符和特殊字符(也叫元字符或限定符)组成。

元字符

元字符

描述

.

匹配除换行符以外的任意字符

\d

匹配数字, 等价于字符组[0-9]

\w

匹配字母, 数字, 下划线

\s

匹配任意的空白符(包括制表符,空格,换行等)

\b

匹配单词开始或结束的位置

^

匹配行首

$

匹配行尾

反义元字符

元字符

描述

\D

匹配非数字的任意字符, 等价于[^0-9]

\W

匹配除字母,数字,下划线之外的任意字符

\S

匹配非空白的任意字符

\B

匹配非单词开始或结束的位置

[^x]

匹配除x以外的任意字符

重复限定符

  • 限定符共有6个, 假设重复次数为x次, 那么将有如下规则:

限定符

描述

*

x>=0

+

x>=1

?

x=0 or x=1

{n}

x=n

{n,}

x>=n

{n,m}

n<=x<=m

字符组

  • […] 表示枚举,匹配中括号内字符之一. 如: [xyz] 匹配字符 x, y 或 z. 如果中括号中包含元字符, 则元字符降级为普通字符, 不再具有元字符的功能, 如 [+.?] 匹配 加号, 点号或问号.
  • [m, n] 表示范围,匹配 m ~ n 范围之内的任意字符

排除性字符组

  • [^…] 匹配任何未列出的字符,. 如: [^x] 匹配除x以外的任意字符.

多选结构

  • | 就是或的意思, 表示两者中的一个. 如: a|b 匹配a或者b字符.

括号

  • 括号 常用来界定重复限定符的范围, 以及将字符分组. 如: (ab)+ 可以匹配abab..等, 其中 ab 便是一个分组.

转义字符

  • 即转义字符, 通常 * + ? | { [ ( ) ] }^ $ . # 和 空白 这些字符都需要转义.

操作符的运算优先级

  1. 转义符
  2. (), (?:), (?=), [] 圆括号或方括号
  3. *, +, ?, {n}, {n,}, {n,m} 限定符
  4. ^, $ 位置
  5. | “或” 操作

正则表达式常用函数

正则表达式旗标

小试牛刀

匹配手机号码

手机号码是一串1开头的11位号码,我们就根据此规则来书写正则表达式

①:1开头:^1

②:除去首位1,还剩下10位数字,\d表示一位数字

③:限定符{10}表示字符重复10次

④:到这里,匹配就应该结束了,所以还需要设置结尾符号$

⑤:综合上述信息,手机号码的正则表达式为^1\d{10}$

匹配身份证号码

身份证号码有15位和18位两种,其中18位号码结尾可能是x

①:1~8开头:^[1-8]

②:除去首位,15位身份证号还剩下14位数字,\d{14}

③:再加上结尾符,15位身份证正则表达式为:^[1-8]\d{14}$

④:除去首位,18位身份证号还剩下17位数字,且最后一位可能是X\d{16}(\d|X)

⑤:再加上结尾符,18位身份证正则表达式为:^[1-8]\d{16}(\d|X)$

⑥:将15位和18位两种正则结合,身份证号码的正则表达式为^[1-8](\d{14}|\d{16}(\d|X))$

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乐享数据8090 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正则表达式的构成元素
  • 正则表达式常用函数
  • 正则表达式旗标
  • 小试牛刀
    • 匹配手机号码
      • 匹配身份证号码
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档