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 正则表达式相关知识

1、compile 函数

使用 re.compile 可以将正则表达式的字符串形式编译为一个 Pattern 对象,通过 Pattern 对象提供的一系列方法对文本进行匹配查找,re.compile 单独使用没有任何意义,需要和findall(), search(), match()等搭配使用。 比如:

import re

text = '''
【代号】华法琳
【性别】女
【战斗经验】十年
【出身地】卡兹戴尔
'''
p = re.compile(r'【.*?】') #使用re.compile编写要匹配的规则
p.findall(text) #找出所有【】的内容

#匹配结果为:['【代号】', '【性别】', '【战斗经验】', '【出身地】']

2、 findall?函数

findall() 可以返回文本中所有与Pattern匹配的字符,返回形式为数组

findall可以有两种方式使用:

re.findall( pattern , text )? #pattern为re.compile编写的pattern对象,text为要进行匹配的文本

pattern.findall(text)? ? ? ? ??#text为要进行匹配的文本

当匹配不到文本时返回空列表。

import re

text = '''新增关卡:GA-ST-1 风云际会、GA-1 灯下黑、GA-2 散步时光、
GA-3 混血儿、GA-TR-1 甜品时间、
GA-4 安魂教堂、GA-5 葬礼、GA-6 安魂曲、GA-7 光与影、GA-8 影与灰、GA-ST-2 鸢尾花'''

p = re.compile(r'(GA-.*?)、')  #匹配GA-开始、顿号结束的字符
p.findall(text) #找出所有符合的字符文本

#输出结果为:
['GA-ST-1 风云际会',
 'GA-1 灯下黑',
 'GA-2 散步时光',
 'GA-3 混血儿',
 'GA-TR-1 甜品时间',
 'GA-4 安魂教堂',
 'GA-5 葬礼',
 'GA-6 安魂曲',
 'GA-7 光与影',
 'GA-8 影与灰']

3、match函数?search函数

match()个人觉得比较废,我基本不会用,他的概念是从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None。(如果开头第一个字符匹配不到,那直接就返回None了。。)

search()与match()类似,唯一的区别就是search可以不从位置0开始匹配

re.match和re.search匹配成功之后,都是返回一个Object 对象,提供了以下的方法:

  • group() 返回匹配的字符串
  • start() 返回匹配开始的位置
  • end() 返回匹配结束的位置
  • span()返回一个元组,包含匹配 (开始,结束) 的位置
import re

#使用match来进行匹配
result = re.match("华法琳","华法琳小姐的道德观念相当淡泊。")
#因为匹配的文本以"华法琳"开头,match可以匹配到,并返回一个对象
if result:
    print(result.group())
else:
    print("匹配失败!")
#运行结果:华法琳


#使用match来进行匹配
result = re.match("华法琳","每个人都知道华法琳小姐是罗德岛的元老且医术高超。")
#因为匹配的文本没有以"华法琳"开头,match直接返回None
if result:
    print(result.group())
else:
    print("匹配失败!")
#运行结果:匹配失败!

import re

#使用search进行匹配
p = re.compile(r'血先生')
text = '华法琳小姐的房间中摆放的那些“血先生”参与过的著作,“血先生”正是华法琳小姐。'
#和match不同,即使不以"血先生"开头,search也可以匹配到文本
#同时与findall不同,search只能匹配到一个"血先生"
result = re.search(p,text)


if result:
    print(result.group())
else:
    print("匹配失败!")
#输出结果为:血先生

4、sub函数

re.sub()用于替换文本中需要替换掉的词语,返回替换后的文本,sub有两种使用方式:

pattern.sub( 替代后的词语 , text )

?re.sub(pattern, 替代后的词语 , text )

text = '''虽然,从外表上看阿米娅仅仅是个不成熟的少女,实际上,她却是深受大家信任的合格的领袖。
现在,阿米娅正带领着罗德岛,为了感染者的未来,为了让这片大地挣脱矿石病的阴霾而不懈努力。'''

p = re.compile(r'阿米娅')
result = p.sub('胡桃',text)
#等价于result = re.sub(p,'胡桃',text)

print(result)
#结果:'虽然,从外表上看胡桃仅仅是个不成熟的少女,实际上,她却是深受大家信任的合格的领袖。\n
#现在,胡桃正带领着罗德岛,为了感染者的未来,为了让这片大地挣脱矿石病的阴霾而不懈努力。'

5、split函数

split能够按照所能匹配的字串将字符串进行切分,返回切分后的字符串列表,split也是有两种使用方式:

pattern.split(??text )

?re.split(pattern, text )

import re

text = '''虽然,从外表上看阿米娅仅仅是个不成熟的少女,实际上,她却是深受大家信任的合格的领袖。
现在,阿米娅正带领着罗德岛,为了感染者的未来,为了让这片大地挣脱矿石病的阴霾而不懈努力。'''

p = re.compile(r'阿米娅')
p.split(text)
#等价于:re.split(p,text)

#输出:
#['虽然,从外表上看',
#'仅仅是个不成熟的少女,实际上,她却是深受大家信任的合格的领袖。\n现在,',
#'正带领着罗德岛,为了感染者的未来,为了让这片大地挣脱矿石病的阴霾而不懈努力。']

表达式字符含义:

与多种字符匹配的表达式


/d 任意一个数字,0~9之中的任意一个数字 ,/D 匹配所有非数字字符

/w 任意一个字母或数字或下划线,也可以是中文,?/W 匹配所有非数字字符下划线的字符

/s 包括空格、制表符、换页符等空白字符的其中任意一个,/S 匹配所有非空白字符

.? ??小数点可以匹配除了换行符(/n)以外的任意一个字符


匹配多种字符的表达式


[aA1@]? ? ?匹配 "a" 或 "A" 或 "1" 或 "@"

[^abc]? ? ? ? 匹配 "a","b","c" 之外的任意一个字符

[f-k]? ? ? ? ? ?匹配 "f"~"k" 之间的任意一个字母

[^A-C0-3]? 匹配 "A"~"C","0"~"3" 之外的任意一个字符


修饰匹配次数的符号


{n}? ? ?表达式重复n次,比如:"/w{2}" 相当于 "/w/w";"a{5}" 相当于 "aaaaa"

{x,y}??表达式至少重复m次,最多重复n次,比如:"ab{1,3}"可以匹配 "ab"或"abb"或"abbb"

{m,}? ?表达式至少重复m次,比如:"/w/d{2,}"可以匹配 "a12","_456","M12344"...

?? ? ? ??匹配表达式0次或者1次,相当于 {0,1}

'+'? ? ? ?表达式至少出现1次,相当于 {1,}.

*? ? ? ? ?表达式不出现或出现任意次,相当于 {0,}


特殊符号


^??与字符串开始的地方匹配,不匹配任何字符

$??与字符串结束的地方匹配,不匹配任何字符

/b 匹配一个单词边界,也就是单词和空格之间的位置,不匹配任何字符, /B 匹配非单词边界

|? ? 表示 "或" 关系,a|b 表示a或者b

()? ?在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰;取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到
?

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

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