IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 小福利,强大的Python正则表达式过滤一切你想要的信息! -> 正文阅读

[Python知识库]小福利,强大的Python正则表达式过滤一切你想要的信息!

大家好,我是天空之城,今天给大家带来小福利,强大的Python正则表达式过滤一切你想要的信息!
1 基本字符
在这里插入图片描述

import re

str1 = "fcny fzy fby f6y fay"

result1 = re.findall("f[a-z]y",str1)
result2 = re.findall("f[0-9]y",str1)
result3 = re.findall("f[za6]y",str1)

print(result1)
print(result2)
print(result3)

结果
['fzy', 'fby', 'fay']
['f6y']
['fzy', 'f6y', 'fay']

上面代码表示匹配开头是a,末尾是b。唯一不同的就是[ ]符号中匹配值不同。
第一行result1表示中间的字符,只要是a-z字母中任何一个,都可以被匹配到。
第二行result2表示中间的字符,只要是0-9数字中任何一个,都可以被匹配到。
第三行result3表示中间的字符,只能是z或a或6这三者中任何一个,才能被匹配到。

2 |或运算符
用于匹配符号前或符号后的字符

import re

str2 = "我是蜘蛛侠,可以称呼我为超能力使者!"

result1 = re.findall("蜘蛛侠|超能力使者",str2)
?
print(result1)
结果
['蜘蛛侠', '超能力使者']
要么匹配孙悟空,要么匹配齐天大圣。

3 \转义字符
可以让某些字母表示特殊含义

import re

str3 = "\n123456" ①
str4 = "\\n123456" ②
str5 = r"\n123456" ③

result3 = re.findall("n",str3)
result4 = re.findall("n",str4)
result5 = re.findall("n",str5)

print(result3)
print(result4)
print(result5)
结果
[]
['n']
['n']

第一行一个转义字符 + 字母n,是一个特殊整体\n,用于表示换行符,因此匹配不到n这个字母。
第二行两个转义字符 + 字母n,其中\n是一个特殊整体,再加上一个转义符号\,就将其变为一个普通字母n,因此匹配到了n。
第三行其实和②的含义一样,也可以将特殊整体\n,变为一个普通字母n,因此同样可以匹配到n。

4 ^和$符号
^乘方符号,表示以…开头

$美元符号,表示以…结尾

import re

str6 = "你来自哪里?我来自江苏省,你来自辽宁省"

result7 = re.findall("^你",str6)
result8 = re.findall("^来",str6)

result9 = re.findall("..省",str6)
result10 = re.findall("省$",str6)

print(result7)
print(result8)
print(result9)
print(result10)
结果
['你']
[]
['江苏省', '辽宁省']
['省']
一个用于匹配开头,一个用于匹配结尾。只要开头或结尾与要匹配的值一致,才能被匹配到。

5 .*?符号
点号可以匹配(除了换行符以外的)任意单个字符

import re

str7 = "abcdaabb"

result10 = re.findall("a.b",str7) ①
result11 = re.findall("a*b",str7) ②
result12 = re.findall("a?b",str7) ③

result13 = re.findall("a.*b",str7) ④
result14 = re.findall("a.*?b",str7)print(result10)
print(result11)
print(result12)
print(result13)
print(result14)
结果
['aab']
['ab', 'aab', 'b']
['ab', 'ab', 'b']
['abcdaabb']
['ab', 'aab']


点号一般与*号和?号搭配使用。仔细观察①-⑤处的正则表达式,开头和结尾都是a、b,唯一不同的就是它们之间的符号。
①处点号表示匹配(除了换行符)任意单个字符。因此,只要开头是a,结尾是b,中间是任何一个单个字符,都会被匹配上。
②处*号表示匹配前面一个字符0或多次,在这里 * 号前面是a。因此,只要结尾是b,前面是>=0个a的值,都会被匹配上。
③处?号表示匹配前面一个字符最多一次,在这里 * 号前面是a。因此,前面是大一等于0、小于等于1个a的值,都会被匹配上。
④.*组合 ,称为“贪婪匹配”,是因为它会匹配到尽可能多的内容。原本开头是a,那么只要找到b,就是一个返回值。但是贪婪匹配不这样,他会一直朝后面走,直到找到最后一个b才肯罢休,然后返回一个超级长的字符串。
⑤.*?组合 ,称为“非贪婪匹配”,就是为了制止贪婪匹配而生的。他舅不贪得无厌,只要是开头是a,你后面不是想要b吗,我碰到第一个就给你返回了。

6 ()符号
组,可以匹配括号内的表达式,括号中的每个字符是and的含义

import re

str8 = "a996b金刚c"

result15 = re.findall("a(\d+)b([\u4e00-\u9fa5]+)c",str8)

print(result15)
结果
[('996', '金刚')]
()表示一个组,只要是()中的内容,最后都会被返回

6个特殊字符
它们常与转义符号搭配,有着特别的用处和含义
在这里插入图片描述
在这里插入图片描述
\d仅匹配数字,\D用于匹配非数字,很好理解。

在这里插入图片描述
\s仅匹配空白字符,\S用于匹配非空白字符(这个更常用)。

在这里插入图片描述
\w相当于[A-Za-Z0-9_],超好用(值得注意),\W匹配非单词字符,了解即可。

更多详细内容,请关注公众号数据分析与统计学之美
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:19:16  更:2021-09-02 11:19:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:28:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码