正则表达式笔记

正则表达式检测网站regex101: build, test, and debug regex

复制代码
#encoding=utf-8
import re

content="苹果是绿色的橙子是橙色的香蕉是黄色的乌鸦是黑色的"
p=re.compile(r'.色')
for one in p.findall(content):
    print(one)

"."匹配任意字符(一个)

"*"匹配任意个字符包括0个和任意个

复制代码
#encoding=utf-8
import re

content=("苹果是,绿色的\n"
         "橙子是,橙色的\n"
         "香蕉是,黄色的\n"
         "乌鸦是,黑色的\n")
p=re.compile(r',.*')
for one in p.findall(content):
    print(one)

"+"匹配至少1词

"{6}"重复6次

\d:任意数字

\D:非数字

\s:空字符,如\\t\\n\\r\\f\\v

\S:非空字符\^\\t\\n\\r\\f\\v

\w:任意文字字符=a-zA-Z0-9_

\W:非文字字符=\^a-zA-Z0-9_

12匹配1或2

\^表示非

^表示匹配文本的起始位置

单行模式:表示匹配整个文本的开头位置

多行模式:表示匹配文本每行的开头位置

复制代码
#encoding=utf-8
import re

content="""001-苹果价格-60,
002-橙子价格-70,
003-香蕉价格-80,
"""
import re
p=re.compile(r'^\d+')
print(p.findall(content))

多行模式:表示匹配文本每行的开头位置

python 复制代码
#encoding=utf-8
import re

content="""001-苹果价格-60,
002-橙子价格-70,
003-香蕉价格-80,
"""
import re
p=re.compile(r'^\d+',re.MULTILINE)
print(p.findall(content))

"$"表示文本的结束位置

如果是单行模式,表示这个文本的结束位置

如果是多行模式,表示文本每行的结束位置

python 复制代码
#encoding=utf-8
import re

content="""001-苹果价格-60,
002-橙子价格-70,
003-香蕉价格-80,"""
import re
p=re.compile(r'\d+,$',re.MULTILINE)
print(p.findall(content))

"?"取消贪婪模式

匹配模式替换:

复制代码
#encoding=utf-8
import re

content="""001-苹果价格-60,
002-橙子价格-70,
003-香蕉价格-80,"""
import re
names="关羽;张飞,赵云, 马超,黄忠, 李逵"
p=re.split(r'[;,\s]\s*',names)
print(p)
names='''<a href='https://www.bilibili.com.vieo/av23456543/?p=1'target="_blank">点击这里,这边看视屏</a>
         <a href='https://www.bilibili.com.vieo/av23342445/?p=1'target="_blank">点击这里,这边看视屏</a>
         <a href='https://www.bilibili.com.vieo/av23486573/?p=1'target="_blank">点击这里,这边看视屏</a>
'''
#替换函数,参数对象是match
def subfun(match):
    #Match对象的group(0)返回的是整个匹配上的字符串
    src=match.group(0)

    #March对象的group(1)返回的是第一个group分组的内容
    number=int(match.group(1))+6
    dest=(f'/av{number}/')
    print(f'{src}替换为{dest}')
    return dest

newStr=re.sub(r'/av(\d+?)/',subfun,names)
print(newStr)
相关推荐
喵了几个咪2 分钟前
AI 时代的危与机:当潮水退去,技术人如何自处
1024程序员节
叼烟扛炮1 小时前
Linux 学习笔记(四十一):TCP 并发演进——从单进程到多线程服务器
linux·运维·服务器·网络·笔记·学习·tcp/ip
叼烟扛炮1 小时前
Linux 学习笔记(四十三):网络编程进阶——自定义协议解决 TCP 粘包与守护进程
linux·开发语言·网络·笔记·tcp/ip
songyuc2 小时前
【Manskill3】TableSceneBuilder学习笔记
pytorch·笔记·学习
LMT流氓兔2 小时前
第五单元——第十六课:给书店助手加上网页界面
java·开发语言·jvm·人工智能·oracle·langchain·1024程序员节
开开心心就好4 小时前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
゛凌乱的记忆づ4 小时前
好用的md文件编辑器——TyporaS与Typora
笔记·git·typora·markdown
zroooo4 小时前
计算机学习-知识庞大而繁杂
笔记·学习
坤坤子吖5 小时前
算法学习——单调队列
开发语言·c++·笔记·学习·算法
Zhao-Jichao6 小时前
AI Prompting for Everyone 课程笔记 - 05 使用深度搜索 Using Deep Research
人工智能·笔记