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中由re模块提供有了全部的正则表达式功能

这里用一段字符串来作为示例

import re
message = 'python is the best language in the world'

re.match是从字符串的起始位置去匹配,第一个参数是正则,第二个参数是需要匹配的字符串

result = re.match('p',message)
print(result.group())

例如这里,改成匹配’t’则会报错,但可以改成’python’,也可以匹配成功
group()是来用来获取匹配成功的字符串,例如上面的语句会输出p

另,默认情况下如这样的情况是会对大小写敏感的,如用P来则会报错
当然,我们可以增加标志位以使得规则发生变化

我们可以在match的最后添加一些标志位规则:
如:
re.I:使得对大小写不敏感
re.M:多行匹配,影响 ^ 和 $
re.I:做本地化识别(locale-aware)匹配
re.S:使 . 匹配包括换行在内的所有字符
re.U:根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B
re.X:该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解

result1 = re.match('P',message,re.I)

当然我们也可同时存在多个条件,如下面这样写:

result2 = re.match('P',message,re.I|re.M)

group(num)可以获取匹配的数据,如果有多个匹配结果的话会以元组的形式存放到group对象中
groups()是返回这整个元组

result3 = re.match('(.*) is (.*?) .*',message,re.I)
'''
这里的正则表示is前和is后的内容,故如匹配成功,会将匹配的结构python和the存入元组中
那么此时的group(1)就是python,group(2)就是the
而如果使用groups(),就会返回一个包含python和the的元组
'''
print(result3)
print(result3.group(1))
print(result3.group(2))
print(result3.groups())

输出结果:

python
the
('python', 'the')

另外,re模块还有一些匹配规则:

常见的匹配规则-匹配字符:
. :匹配任意一个字符除了换行符\n
[abc] :匹配abc中的任意一个字符(一个中括号只能匹配一个字符)
\d :匹配一个0-9的数字
\D :匹配非数字
\s :匹配空白,即空格键、tab键
\S :匹配非空白,即除了空格键、tab键
\w :匹配单词字符,即a-z、A-Z、0-9、_
\W :匹配非单词字符

如:

message1 = '李淳罡'
result4 = re.match('李..',message1)
print(result4.group())

常用的匹配规则-匹配字符数量:
*:匹配前一个字符出现0次或者无限次,即可有可无
+:匹配前一个字符出现1次或者无限次,即至少1次(不能匹配数字开头,中间还是可以)
?:匹配前一个字符出现1次或者0次,即至多1次
{m}:匹配前一个字符出现m次
{m,}:匹配前一个字符至少出现m次
{m,n}:匹配前一个字符出现从m到n次

如:

message2 = 'Any'
message3 = 'Afjsihgiesgsnoiaafjhf'
result5 = re.match('[A-Z][A-Z]*',message2)
result6 = re.match('[A-Z][a-z]*',message2)
result7 = re.match('[A-Z][a-z]*',message3)
print(result5.group())
print(result6.group())
print(result7.group())
'''
这个地方的原本意思是:两个[]表示如果在内容限定的范围内就可以匹配到
而在第二个[]后面加了*,即表示这个字符的数量可以是0-无穷
那么result5因为Any的第二个字符往后都是小写,不在限定的范围内,则是匹配0次(不符合要求也不会报错)
result6乃至于result7呢,限定的条件改成了小写,而因为Any第二个字符往后都是小写,都满足要求,那么它一直匹配下去
'''

顺便一提,如果想匹配大小写都可以的话,也可以这样写:[a-zA-Z]
输出结果:

A
Any
Afjsihgiesgsnoiaafjhf
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-02-14 21:05:39  更:2022-02-14 21:06:42 
 
开发: 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 23:53:50-

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