首页 > 编程语言 >python re模块

python re模块

时间:2023-07-18 09:26:08浏览次数:32  
标签:字符 模块 示例 python re result str findall

目录

1. 单字符

  • .表示除了\n外的任意一个字符
  • \d为数字, \D反之
  • \s表示空白字符, \S反之
  • \w表示字母,数字,下划线, \W反之

2. 字符集

  • []里面是单个字符进行匹配, 如果需要的话要好几个[]才行

3. 转义字符

  • \

4. 数量规则

  • *表示任意个字符
  • +表示至少一个
  • ?表示0或者1个
  • 使用{}规定范围, 可以类似{3,5},注意不能有空格

5. 边界处理

  • ^表示限制开头, 注意不能用[]
  • $限制结尾的字符
  • \b表示字符的边界,只有空格才行, \B相反

示例1

import re


str = 'abc'
match_result = re.match("abc", str) # match是从开头开始匹配的, 这样结果是None
find_result = re.findall("c", str) # 可以不从头开始,结果是一个列表


# .的使用
# .表示除了\n之外的任意一个字符, 字母,数字,标点这些都可以用.表示

str = "abc,.-d"
result1 = re.findall(".", str) # ['a', 'b', 'c', ',', '.', '-', 'd']


# \d 表示单个数字
str = "abc12-="
result2 = re.findall("\d", str) # ['1', '2']


# \D 表示非数字
str = "abc12-=()你好"
result2 = re.findall("\D", str) # ['a', 'b', 'c', '-', '=', '(', ')', '你', '好']



# \s表示空白字符, 换行等格式符也是空白符
str = "ab\n0 8" 
result = re.findall("\s", str) # ['\n', ' ']

# \S表示非空白字符
str = "ab\n0 8" 
result = re.findall("\S", str) # ['a', 'b', '0', '8']

# \w 字母, 数字, 下划线, 这些常见的可用的
str = "Aa09_-=1"
result = re.findall("\w", str) # ['A', 'a', '0', '9', '_', '1']

# \W 非字母, 数字, 下划线
str = "Aa09_-=1"
result = re.findall("\W", str) # ['-', '=']

示例2

import re

#[]本质上还是单个字符的寻找
str  = "aa1bb1c1d4ge"
# 把符合单字符条件的字符找出来
result = re.findall('[abcde]', str) # ['a', 'a', 'b', 'b', 'c', 'd', 'e']

# 常见的满足顺序的字符可以用-表明范围
str = "aa1bb1c1d4ge"
result = re.findall('[a-e]', str) # ['a', 'a', 'b', 'b', 'c', 'd', 'e']

str = "098701230"
result = re.findall('[0-7]', str)  # ['0', '7', '0', '1', '2', '3', '0']


# ^是取反符号, 取反并不局限与此类型
str  = "aa1bb1c1d4ge"
result = re.findall('[^abcde]', str) # ['1', '1', '1', '4', 'g']
# 注意如果不用[]括起来, 代表的是以什么开头
str  = "aa1bb1c1d4ge"
result = re.findall("^aa1\w+",str) # ['aa1bb1c1d4ge']


# 可以把字符连起来, 注意[]是寻找单字符的, 所以要想寻找多个需要好几个[]
str  = "aa1AFGbb1c1d4ge"
result = re.findall('[aa1AFGbb1]', str) # ['a', 'a', '1', 'A', 'F', 'G', 'b', 'b', '1', 'c', '1', 'd', '4', 'g', 'e']
result = re.findall('aa1AFGbb1', str)  # ['aa1AFGbb1']
result = re.findall('[a-z][0-9]',str) # ['a1', 'b1', 'c1', 'd4']
result = re.findall('\w[a-z][0-9]',str) # ['aa1', 'bb1', '1d4']

示例3

# 转义字符的好玩之处
# 这是因为\d python默认按路径来处理需要解析的字符串\d, 这样的话其实是表示为\\d了
str = "\d"
result = re.findall("\d",str) # []
result = re.findall("\\d",str) # []
result = re.findall("\\\d",str) # ['\\d']
result = re.findall("\\\\d",str) # ['\\d']

str = "\n"
result = re.findall("\\n",str) # ['\n']
result = re.findall("\\\n",str) # ['\n']

示例4

import re


# *表示任意个字符, 包括0, 所以实际中用+效果更好
str = "123456dad155"
result = re.findall("[\d]*", str) # ['123456', '', '', '', '155', '']
result = re.findall("\d*", str) # ['123456', '', '', '', '155', '']


# +表示至少一个字符
str = "123456dad155"
result1 = re.findall("[\d]+", str) # ['123456', '155']
result2 = re.findall("\d+", str) # ['123456', '155']

# ?表示0或者1个字符
str = "123456dad155"
result1 = re.findall("[\d]?", str) # ['1', '2', '3', '4', '5', '6', '', '', '', '1', '5', '5', ''] 
result2 = re.findall("\d?", str) # ['1', '2', '3', '4', '5', '6', '', '', '', '1', '5', '5', ''] 


# {n} , {m, n}表示出现数量
str = "123456dad155" 
result1 = re.findall("\d{3}", str) # ['123', '456', '155']

示例代码5

import re

# ^表示限定开始的字符, 注意不带[],否则成了取反了
str = "a12c45b" 
result1 = re.findall("^a\d{2}",str) # ['a12']
result2 = re.findall("^c\d{2}",str) # [], 开头不是c, 所以没有

# 使用$限定结束的字符
str = "0123458"
result = re.findall("\d{2}8$",str) # ['458']
result = re.findall("\d{2}5$",str) # []


# 使用\b表示字符的边界, 必须空格才行, \B反之
str = "abd abdag 3bd bda"
# str = "abd.1"  这个无法识别
result = re.findall('bd\\b', str) # 注意这里转义字符的使用, 这里表示用bd结尾的
result = re.findall('\\bbd', str) # 这里表示以bd开头的
result = re.findall('\\Bbd', str) # 这里表示不是以bd开头的

标签:字符,模块,示例,python,re,result,str,findall
From: https://www.cnblogs.com/sdulyq/p/17560586.html

相关文章

  • Python 带颜色字体的打印
    带颜色字体的打印原理不做描述,封装后的函数如下所示#-*-coding:utf-8-*-"""带颜色打印输出;"""defprint_white(s:str):"""白色字体打印;"""print(f"\033[30m{s}\033[0m")defprint_red(s:str):&quo......
  • HPET(High Precision Event Timer)是一种高精度事件计时器,它是计算机系统中的一项技术,用
    HPET(HighPrecisionEventTimer)是一种高精度事件计时器,它是计算机系统中的一项技术,用于提供更准确的时间测量和事件同步。HPET是一种硬件计时器,它具有以下特点:高精度:HPET可以以纳秒级别的精度进行时间测量,比传统计时器更准确。一致性:HPET提供一致的时间基准,可以在不同的操......
  • FHQ-Treap
    简介FHQ-Treap是一种无旋转的Treap。和大多数的平衡树不一样,它并不是用旋转来维护的,而是使用了split(分裂)和merge(合并)两种操作来维护Treap的性质。实现splitsplit操作可以将一个FHQ-Treap按照某个值分裂为两个FHQ-Treap:按照权值分:将权值\(\leval\)的放到一个......
  • 重新整理 .net core 实践篇———承载[外篇]
    前言简单介绍一下承载。正文名称叫做承载,其实就是.netcore定义的一套长期运行的服务的规范。这个服务可以是web服务,也可以是其他服务,比如tcp,或者一些监控服务。这里以监控服务为例子:publicclassPerformanceMetrics{ privatestaticreadonlyRandom_random=newRa......
  • Proj. CMI Paper Reading: Conversational Automated Program Repair
    Abstract背景:之前APR与大模型的结合仅仅使用了一些特殊构建的input/prompt本文:conversationalAPR方法:使用long-termcontextwindow来记录之前的validationfeedback实验:在10个LLMs上进行对比展示改进......
  • HandlerMethodArgumentResolver方法参数解析器的使用
    一、使用场景介绍HandlerMethodArgumentResolver,中文称为方法参数解析器,是SpringWeb(SpringMVC)组件中的众多解析器之一,主要用来对Controller中方法的参数进行处理。在一般的接口调用场景下,每次调用Controller都需要检查请求中的token信息,并根据token还原用户信息,然后将用户信息封......
  • Proj. CMI Paper Reading: R-U-SURE? Uncertainty-Aware Code Suggestions By Maximiz
    AbstractTask:buildinguncertainty-awaresuggestionsbasedonadecision-theoreticmodelofgoal-conditionalutility,推理LLM用户的未观测到的意图方法:adecision-theoreticmodelofgoal-conditionedutility,使用生成式模型生成的randomsamples来做proxy,minimumBa......
  • Proj. CMI Paper Reading: Distributed System Fuzzing
    Abstract背景:当前分布式系统分析一般都是黑盒工具,难以探索程序状态工具:MALLORY任务:greyboxfuzzingtestingdistributedsystem方法:timeline-driventesting,timelineabstraction步骤:动态构建描述系统行为的Lamporttimelines将这些timelines抽象化为happens-beforesu......
  • python: logHelper
     #encoding:utf-8#版权所有2023涂聚文有限公司#许可信息查看:https://docs.python.org/3/library/logging.html#描述:https://www.programcreek.com/python/example/136/logging.basicConfig#https://github.com/amilstead/python-logging-examples#Author......
  • Unified Conversational Recommendation Policy Learning via Graph-based Reinforcem
    图的作用:图结构捕捉不同类型节点(即用户、项目和属性)之间丰富的关联信息,使我们能够发现协作用户对属性和项目的偏好。因此,我们可以利用图结构将推荐和对话组件有机地整合在一起,其中对话会话可以被视为在图中维护的节点序列,以动态地利用对话历史来预测下一轮的行动。由四个主要组......