Python正则表达式的常见用法

字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。

正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。

在Python3.0中,用来处理正则表达式的包为re

使用的时候需要先引入这个包,语句为

import re

查找一个匹配项

查找并返回一个匹配项的函数有3个:search、match、fullmatch,他们的区别分别是:

  • search: 查找任意位置的匹配项
  • match: 必须从字符串开头匹配
  • fullmatch: 整个字符串与正则完全匹配
text = u"我是大帅哥a,我是大帅哥a,哈哈哈!!!"
pattern = r"我是大帅哥"
out = re.search(pattern, text)
print(out)

查找多个匹配项

查找一个匹配项是相对简单的场景,现在我们就来进阶下。现在就来看看查找多项吧,查找多项函数主要有:findall函数 与 finditer函数:

  • findall: 从字符串任意位置查找,返回一个列表
  • finditer:从字符串任意位置查找,返回一个迭代器
text = u"我是大帅哥a,我是大帅哥a,哈哈哈!!!"
pattern = r"我是大帅哥"
out = re.findall(pattern, text)
print(out)

字符串替换


接下来,以表格的方式来归纳基础的语法:

语法 代表的含义
^ 匹配字符串的开始
$ 匹配字符串的结尾
\b 匹配一个单词的边界
\d 匹配任意数字
\D 匹配任意非数字字符
x? 匹配一个可选的 x 字符 (换言之,它匹配 1 次或者 0 次 x 字符)
x* 匹配0次或者多次 x 字符
x+ 匹配1次或者多次 x 字符
x{n,m} 匹配 x 字符,至少 n 次,至多 m 次
(a|b|c) 要么匹配 a,要么匹配 b,要么匹配 c
(x) 一般情况下表示一个记忆组 (remembered group) 你可以利用 re.search 函数返回对象的 groups() 函数获取它的值
. 正则表达式中的点号通常意味着 “匹配任意单字符”

然后,根据基础语法组合出一些常用的写法

语法 代表的含义
\d+ 匹配字符串里的连续数字
\d{4}(?:- |/|.)\d{1,2}(?:-|/|.)\d{1,2} 匹配日期,常见的日期格式有yyyyMMdd、yyyy-MM-dd、yyyy/MM/dd、yyyy.MM.dd
(?:(?:http://)|(?:https://))?(?:\w?.)+[a-zA-Z]{2,6}(?:/) 匹配待带http头的常见的域名格式
[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(?:.[a-zA-Z0-9_-]+) 匹配邮箱

参考文档:https://cloud.tencent.com/developer/article/1769462

作者:Qingyun
                
comments powered by Disqus