前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「Python」正则表达式

「Python」正则表达式

原创
作者头像
AXYZdong
修改2021-12-29 18:33:44
5570
修改2021-12-29 18:33:44
举报
文章被收录于专栏:想到什么就分享

Author:AXYZdong 自动化专业 工科男 有一点思考,有一点想法,有一点理性! 定个小小目标,努力成为习惯!在最美的年华遇见更好的自己!

正则表达式,简称 regex ,是文本的一种描述方法。

在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要,正则表达式就是用于描述这些规则的工具,换句话说正则表达式是一种工具,它定义了字符串的匹配模式(如何检查一个字符串是否有跟某种模式匹配的部分或者从一个字符串中将与模式匹配的部分提取出来或者替换掉)。

例如,\d 是一个正则表达式,表示一位数字字符,即任何一位 0 到 9 的数字。

常见正则表达式

符号

解释

示例

说明

.

匹配任意字符

b.t

可以匹配bat / but / b#t / b1t等

\w

匹配字母/数字/下划线

b\wt

可以匹配bat / b1t / b_t等 但不能匹配b#t

\s

匹配空白字符(包括\r、\n、\t等)

love\syou

可以匹配love you

\d

匹配数字

\d\d

可以匹配01 / 23 / 99等

\b

匹配单词的边界

\bThe\b

^

匹配字符串的开始

^The

可以匹配The开头的字符串

$

匹配字符串的结束

.exe$

可以匹配.exe结尾的字符串

\W

匹配非字母/数字/下划线

b\Wt

可以匹配b#t / b@t等 但不能匹配but / b1t / b_t等

\S

匹配非空白字符

love\Syou

可以匹配love#you等 但不能匹配love you

\D

匹配非数字

\d\D

可以匹配9a / 3# / 0F等

\B

匹配非单词边界

\Bio\B

[]

匹配来自字符集的任意单一字符

aeiou

可以匹配任一元音字母字符

^

匹配不在字符集中的任意单一字符

^aeiou

可以匹配任一非元音字母字符

匹配0次或多次

\w*

匹配1次或多次

\w+

?

匹配0次或1次

\w?

{N}

匹配N次

\w{3}

{M,}

匹配至少M次

\w{3,}

{M,N}

匹配至少M次至多N次

\w{3,6}

|

分支

foo|bar

可以匹配foo或者bar

(?#)

注释

(exp)

匹配exp并捕获到自动命名的组中

(?<name>exp)

匹配exp并捕获到名为name的组中

(?:exp)

匹配exp但是不捕获匹配的文本

(?=exp)

匹配exp前面的位置

\b\w+(?=ing)

可以匹配I'm dancing中的danc

(?<=exp)

匹配exp后面的位置

(?<=\bdanc)\w+\b

可以匹配I love dancing and reading中的第一个ing

(?!exp)

匹配后面不是exp的位置

(?<!exp)

匹配前面不是exp的位置

*?

重复任意次,但尽可能少重复

a.b a.?b

将正则表达式应用于aabab,前者会匹配整个字符串aabab,后者会匹配aab和ab两个字符串

+?

重复1次或多次,但尽可能少重复

??

重复0次或1次,但尽可能少重复

{M,N}?

重复M到N次,但尽可能少重复

{M,}?

重复M次以上,但尽可能少重复

使用正则表达式的步骤

  1. import re 导入正则表达式模块
  2. 用 re.compile() 函数创建一个 Regex 对象(记得使用原始字符串)
  3. 向 Regex 对象的 search() 方法传入想要查找的字符串。它返回一个 March 对象。
  4. 调用 March 对象的 group() 方法,返回实际匹配文本的字符串。

正则表达式测试网站: http://regexpal.com/

利用正则表达式查找电话号码:

代码语言:txt
复制
>>> import re
>>> phoneNumRegex = re.compile (r'\d\d\d-\d\d\d-\d\d\d\d')	#创建Regex对象(使用原始字符串,简化书写)
>>> mo = phoneNumRegex.search ('My number is 515-345-7890')	#利用search方法传入想要查找的字符串
>>> print('Phone number found :' + mo.group ())	#调用 March 对象的 group() 方法,返回实际匹配文本的字符串
Phone number found :515-345-7890
  • 向 re.compile() 传入一个字符串值,该字符串表示正则表达式,它将返回一个 Regex 模式对象。
  • Regex 对象的 search() 方法查找传入的字符串,寻找正则表达式的所有匹配。没有找到,search() 返回 None 。找到,search() 方法返回一个 March 对象。
  • March 对象有个 group() 方法,它返回被查找字符串中实际匹配的文本。

参考文献

1:https://github.com/jackfrued/Python-100-Days

2:Python编程快速上手:让繁琐工作自动化/ (美)斯维加特(A1 Sweigart) 著;王海鹏译.北京:人民邮电出版社,2016.7

3:Python 中文指南;作者:王炳明,版本:v1.0

本次的分享就到这里

好书不厌百回读,熟读自知其中意。让学习成为习惯,用知识改变命运,让博客见证成长,用行动证明努力。

如果以上内容有任何错误或者不准确的地方,欢迎在下面 👇 留个言。或者你有更好的想法,欢迎一起交流学习~~~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常见正则表达式
  • 使用正则表达式的步骤
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档