首页 > 编程语言 >学习python自动化——re正则

学习python自动化——re正则

时间:2024-01-05 19:12:57浏览次数:36  
标签:匹配 string python demo re 正则 print findall

re(正则)
一、正则表达式作用
正则表达式匹配指定规则的字符串
二、re常用方法

  • findall(pattern, string, flags=0):使用正则表达式,匹配所有符合条件的字符串,返回匹配到的所有子串,返回list

    pattern:正则表达式
    string:匹配的字符串
    flags=0:自定义的一些规则,比如不区分大小写

string = "to1212ken132435testr"
re_demo = "\D"
res4 = re.findall(re_demo,string)
print(res4)      #输出:['t', 'o', 'k', 'e', 'n', 't', 'e', 's', 't', 'r']
  • match(pattern, string, flags=0):匹配字符串开始位置的子串,返回的是对象,需要通过结果处理函数(group())返回;如果开始位置未匹配到就会返回none
string = "to1212ken132435testr"
re_demo = "\D"
res4 = re.match(re_demo,string).group()
print(res4)          #输出:t
  • search(pattern, string, flags=0):匹配找到的第一个符合条件的字符,返回的是对象,需要通过结果处理函数(group())返回
string = "111212ken132435testr"
re_demo = "\D"
res5 = re.search(re_demo,string).group()
print(res5)        #输出:k
  • finditer(pattern, string, flags=0):匹配所有符合条件的子串,返回他们的迭代器对象(需要用for循环遍历,遍历的结果也需要通过结果处理函数(group())返回)
string = "to1212ken132435testr"
re_demo = "\D"
res5 = re.finditer(re_demo,string)
print(res5)            #输出:<callable_iterator object at 0x0000016CAD67DD60>
for i in res5:
print(i.group())      #输出:t o k e n t e s t r

三、单字符匹配

  • . :匹配任意一个字符(除\n),匹配多次每次匹配一个字符,返回匹配结果的list【匹配\n时会报错】
string = "token test"
re_demo = "t."
res1= re.findall(re_demo,string)
print(res1)      #输出:['to', 'te']
  • []:匹配[]中列举的任意一个字符
string = "token testr"
re_demo = "[tos]"
res2 = re.findall(re_demo,string)
print(res2)      #输出:['t', 'o', 't', 's', 't']
  • \d:匹配数字,即0-9
string = "to1212ken132435testr"
re_demo = "\d"
res3 = re.findall(re_demo,string)
print(res3)      #输出:['1', '2', '1', '2', '1', '3', '2', '4', '3', '5']
  • \D:匹配非数字,即不是数字
string = "to1212ken132435testr"
re_demo = "\D"
res4 = re.findall(re_demo,string)
print(res4)      #输出:['t', 'o', 'k', 'e', 'n', 't', 'e', 's', 't', 'r']
  • \s:匹配空白,即空格,tab键
string = " tok en testr "
re_demo = "\s"
res2 = re.findall(re_demo,string)
print(res2)      #输出:[' ', ' ', ' ', ' ']
  • \S:匹配非空白
string = " tok en testr "
re_demo = "\S"
res2 = re.findall(re_demo,string)
print(res2)      #输出:['t', 'o', 'k', 'e', 'n', 't', 'e', 's', 't', 'r']
  • \w:匹配非特殊字符,即a-z、A-Z、0-9、_、汉字
string = "'hello好好学Python3_-&^%$#@"
re_demo = "\w"
res2 = re.findall(re_demo,string)
print(res2)      #输出:['h', 'e', 'l', 'l', 'o', '好', '好', '学', 'P', 'y', 't', 'h', 'o', 'n', '3', '_']
  • \W:匹配特殊字符,即非字母、非数字、非汉字、非下划线
string = "'hello好好学Python3_-&^%$#@"
re_demo = "\W"
res2 = re.findall(re_demo,string)
print(res2)      #输出:["'", '-', '&', '^', '%', '$', '#', '@']

四、多字符匹配

  • *:匹配前一个字符出现0次或无限次,即可有可无,输出的字符与字符串的长度一致i,没有匹配到的字符回显示成空字符
string = "token test ktv"
re_demo ="k*"
res6 = re.findall(re_demo,string)
print(res6)      #输出:['', '', 'k', '', '', '', '', '', '', '', '', 'k', '', '', '']
  • +:匹配前一个字符出现1次或无限次,即至少有1次匹配一个字符串
string = "token test ktn"
re_demo ="k.+n"
res6 = re.findall(re_demo,string)
print(res6)      #输出:['ken test ktn']
  • ?:匹配前一个字符出现0次或1次,即要么1次,要么没有
string = "token test ktn"
re_demo ="k.?n"
res6 = re.findall(re_demo,string)
print(res6)      #输出:['ken', 'ktn']
  • +?:匹配任意一个出现过的字符
string = "token test ktn"
re_demo ="k.+?n"
res7 = re.findall(re_demo,string)
print(res7)      #输出:['ken', 'ktn']
string = "tokn test ktn"
re_demo ="k.+?n"
res7 = re.findall(re_demo,string)
print(res7)      #输出:['kn test ktn']
string = "token test kn"
re_demo ="k.+?n"
res7 = re.findall(re_demo,string)
print(res7)      #输出:['ken']
  • {n}:匹配前一个字符连续出现n次
string = "tokken test kkktn"
re_demo ="k{2}"
res8 = re.findall(re_demo,string)
print(res8)      #输出:['kk', 'kk']
  • {m,n}:匹配前一个字符连续出现从m到n次【至少出现m次,最多出现n次】
string = "tokken test kkktn"
re_demo ="k{1,3}"
res9 = re.findall(re_demo,string)
print(res9)      #输出:['kk', 'kkk']

五、逻辑运算符

  • |:将两个匹配条件进行逻辑”或“(or)运算
string = "tokken test kkktn"
re_demo ="to|te|kk"
res10 = re.findall(re_demo,string)
print(res10)      #输出:['to', 'kk', 'te', 'kk']

六、边界值

  • ^:匹配输入字符串开始位置
string = "tokken test kkktn"
re_demo ="^to"
res11 = re.findall(re_demo,string)
print(res11)      #输出:['to']
  • $:匹配输入字符串结束位置
string = "tokken test kkktn"
re_demo ="tn$"
res12 = re.findall(re_demo,string)
print(res12)      #输出:['tn']

七、分组匹配

  • ():只取括号内的值
data = '{"member_id":"#member_id#","#id#","amount":100}'
re_str = "#(\w.+?)#" #取括号内匹配非特殊字符的任意出现过的字符
res = re.findall(re_str,data)
print(res)      #输出:['member_id', 'id']

标签:匹配,string,python,demo,re,正则,print,findall
From: https://www.cnblogs.com/mango-93/p/16410589.html

相关文章

  • Java Thread Dump文件分析
    分析线程转储对于确定多线程进程中的问题非常有用,可以通过可视化单个线程转储的状态来解决死锁、锁争用和过多的CPU利用率等问题。通过在分析线程转储后纠正每个线程的状态,可以实现应用程序的最大吞吐量。例如,假设一个进程占用了大量CPU,我们可以找出是否有哪个线程占用CPU最多。如......
  • 【设计模式】单例模式——利用ThreadLocal或CAS实现单线程内部的单例模式
    很多时候我们并不需要一个类创建的对象是全局唯一的,只需要保证在单个线程内是唯一的、线程安全的就可以。为了实现单线程内部的单例,我们可以用ThreadLocal或CAS实现。利用ThreadLocal实现先看代码:publicclassThreadLocalSingleton{privatestaticfinalThreadLocal<Thread......
  • 无涯教程-Redis - 服务器命令
    Redis服务器命令基本上用于管理Redis服务器。Server-示例以下示例说明了如何获取有关服务器的所有统计信息和信息。redis127.0.0.1:6379>INFO#Serverredis_version:2.8.13redis_git_sha1:00000000redis_git_dirty:0redis_build_id:c2238b38b1edb0e2redi......
  • python与yum的修复
    装python3.10时删了python3.7,结果导致yum也完蛋了。恢复的思路:彻底删除python和yum后重装。一、删除:1、卸载现有pythonrpm-qa|greppython|xargsrpm-ev--allmatches--nodeps##卸载pythonwhereispython|xargsrm-frv##删除所有参与文件whereispython##......
  • 《python神经网络读书笔记》
    感想:人工智能是一门古老的学科,意思是人为的创造出和人类相似的智能体。在很多科幻影视作品中都有描述,甚至有的影视作品中不是使用计算机来实现人工智能。但是实际上这门学科在21世纪之前一直没什么进展。20世纪时,这门学科的主要研究方向是通过写一些强制判断逻辑来模拟智能体。......
  • EF CodeFirst mysql 迁移异常Unable to create a 'DbContext' of type
    问题过程终端执行dotnetefmigrationsaddinit出现如下错误:Pomelo.EntityFrameworkCore.MySqlMicrosoft.EntityFrameworkCore.ToolsUnabletocreatea'DbContext'oftype''.Theexception'Methodnotfound:'VoidCoreTypeMappingParameters......
  • 7、postgres创建一个新用户
    目录postgres创建一个新用户1、连接到PostgreSQL服务器2、切换对要创建用户的数据库3、创建新的schema4、创建用户5、授权schema的使用权限给新用户postgres创建一个新用户1、连接到PostgreSQL服务器psql-Upostgres2、切换对要创建用户的数据库\ctemplate1;3、创建......
  • 6、postgres序列创建、删除与重置
    postgres序列创建、删除与重置1、序列创建sequence_name为要创建的序列名称;start_value指定起始值;increment_by指定每次递增/递减的量;min_value和max_value分别设置最小值和最大值;cache_size表示可以从内存中获取的序列号的数目。CREATESEQUENCEsequence_name;--使用默认参......
  • re:Invent 2023 Amazon Q 初体验
    前言    亚马逊云科技在2023re:Invent全球大会上宣布推出AmazonQ,在主题演讲中,亚马逊云科技CEOAdamSelipsky将其描述为能够“轻松聊天、生成内容和采取行动”,“一种新型的生成式人工智能助手,旨在工作中为你提供帮助”。Selipsky说,考虑到这个聊天机器人的对话特性,Q这个......
  • Python flask 网页版执行shell命令并返回结果['GET', 'POST'] 混合方式
    前言全局说明Pythonflask网页版执行shell命令并返回结果一、需要安装的库pip3installflask-ihttp://pypi.douban.com/simple/--trusted-hostpypi.douban.compip3installsubprocess-ihttp://pypi.douban.com/simple/--trusted-hostpypi.douban.com二、inde......