Python --- 正则表达式

Posted vehicel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python --- 正则表达式相关的知识,希望对你有一定的参考价值。

什么是正则表达式

我们希望只提取出关注的数据,此时可以通过一些表达式进行提取,正则表达式就是其中一种进行数据筛选的表达式。

原子

原子是正则表达式中最基本的组成单位,每个正则表达式中至少包含一个原子

常见的原子类型有:

1、 普通字符作为原子
2、 非打印字符作为原子
3、 通用字符作为原子
4、 原子表

普通字符作为原子

import re //一定要导入
string = "yigeiwoligiao"
pat = "yi"
print(re.search(pat,string))

非打印字符作为原子

import re //一定要导入
string = "yigeiwoligiao"
pat = "
"
print(re.search(pat,string))

通用字符作为原子

w 字母、数字、下划线
W 除字母、数字、下划线
d 十进制数字
D 除十进制数字
s 空白字符
S 除空白字符

import re
string = "yigeiw1oligiao"
pat = "wd"
print(re.search(pat,string))

原子表

import re
string = "yigeiw1oligiao"
pat = "gei[wyz]"
print(re.search(pat,string))

元字符

. 除换行外任意的一个字符
^ 开始位置
$ 结束位置

  • 01多次
    ? 01次
  • 1多次
    [n] 恰好n次
    [n,] 至少n次
    [n,m] 至少n次,至多m次
    | 模式选择符或
    () 模式单元

模式修正符

I 匹配时忽略大小写
M 多行匹配
L 本地化识别匹配
U uniconde
S 让匹配包括换行符

import re
string = "yigeiw1oligiao"
pat = "Gei"
print(re.search(pat,string,re.I))

贪婪模式与懒惰模式

贪婪模式的核心就是尽可能多的匹配,懒惰模式的核心就是尽可能少的匹配

import re
string = "yigeiw1oligiao"
pat1 = "y.*g"# 贪婪模式
pat2 = "y.*?g"# 懒惰模式,精准
print(re.search(pat1,string,re.I))
print(re.search(pat2,string,re.I))

正则表达式函数

re.match()、re.search()、全局匹配函数、re.sub()函数

1、match //从头匹配
import re
string = "yigeiw1oligiao"
pat = "i.*g"# None
print(re.match(pat,string,re.I))
2、search //不从头匹配也可以
import re
string = "yigeiw1oligiao"
pat = "i.*g"
print(re.search(pat,string,re.I))

全局匹配格式re.compile(正则表达式).findall(数据)

import re
string = "yigeiw1oligiao"
pat = "y.*?g"
print(re.compile(pat).findall(string))

匹配.com和.cn网址

import re
string = "<a helf=‘http://www.baidu.com‘>百度首页</a>"
pat = "[a-zA-Z]+://[S]*[.com|.cn]"
print(re.compile(pat).findall(string))

匹配电话号码

import re
string = "dawdaw123-156479879awdadw674-456789465dwada"
pat = "d{4}-d{7}|d{3}-d{8}"# 这是大括号
print(re.compile(pat).findall(string))




















以上是关于Python --- 正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

python 正则表达式

python成长之路第三篇_正则表达式

python成长之路第三篇_正则表达式

python 正则表达式 re模块基础

Python学习笔记之正则表达式

python基础学习(十三)