首页 > 编程语言 >【转发】Python正则表达式,感谢大佬

【转发】Python正则表达式,感谢大佬

时间:2023-02-13 12:00:31浏览次数:55  
标签:字符 abc 匹配 re Python 正则表达式 转发 字符串

原文:https://www.cnblogs.com/QYGQH/p/12653871.html#!comments

 

python正则表达式的实现主要是通过python的re库,re库是python的标准库,所以无须安装

1.正则表达式的常用操作符

操作符说明实例
. 表示任何单个字符  
[ ] 字符集,对单个字符给出取值范围 [abc]表示a、b、c,[a‐z]表示a到z单个字符
[^ ] 非字符集,对单个字符给出排除范围 [^abc]表示非a或b或c的单个字符
* 前一个字符0次或无限次扩展 abc* 表示ab、abc、abcc、abccc等
+ 前一个字符1次或无限次扩展 abc+ 表示abc、abcc、abccc等
? 前一个字符0次或1次扩展 abc? 表示ab、abc
| 左右表达式任意一个 abc|def表示abc、def
{m} 扩展前一个字符m次 ab{2}c表示abbc
{m,n} 扩展前一个字符m至n次(含n) ab{1,2}c表示abc、abbc
^ 匹配字符串开头 ^abc表示abc且在一个字符串的开头
$ 匹配字符串结尾 abc$表示abc且在一个字符串的结尾
( ) 分组标记,内部只能使用 操作符|(abc)表示abc,(abc|def)表示abc、def
\d 数字,等价于[0‐9]  
\w 单词字符,等价于[A‐Za‐z0‐9_]  

2.re库的使用

主要功能函数

函数说明
re.search() 在一个字符串中搜索匹配正则表达式的第一个位置,匹配成功返回match对象,否则返回None
re.match() 从一个字符串的开始位置起匹配正则表达式,匹配成功返回match对象,否则返回None
re.findall() 搜索字符串,以列表类型返回全部能匹配的子串
re.split() 将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
re.finditer() 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
re.sub() 在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串

更详细的说明请参考Python re文档

例如:

re.search(pattern,string,flags=0)

 

其中:

  • pattern : 正则表达式的字符串或原生字符串表示

  • string : 待匹配字符串

  • flags : 正则表达式使用时的控制标记

常用标记说明
re.I或re.IGNORECASE 忽略正则表达式的大小写,[A‐Z]能够匹配小写字符
re.M或re.MULTILINE 正则表达式中的^操作符能够将给定字符串的每行当作匹配开始
re.S或re.DOTALL 正则表达式中的.操作符能够匹配所有字符,默认匹配除换行外的所有字符
>>> import re
>>> m = re.search(r'[1-9]\d{5}', 'abc1234567')
>>> if m:
...     m.group(0)
...
'123456'

 

还有一种写法是这样的

复制代码
>>> import re
>>> t = re.compile(r'[1-9]\d{5}')
>>> m = t.search('abc1234567')
>>> if m:
...     m.group(0)
...
'123456'
复制代码

 

第二种写法的好处是:当要对一个正则表达式进行多次字符串匹配时,可以只编译一次,匹配多次,可以提升效率

3.Match对象

属性说明
.string 待匹配的文本
.re 匹配时使用的patter对象(正则表达式)
.pos 正则表达式搜索文本的开始位置
.endpos 正则表达式搜索文本的结束位置
.group() 获得匹配后的字符串
.start() 匹配字符串在原始字符串的开始位置
.end() 匹配字符串在原始字符串的结束位置
.span() 返回(.start(), .end())

4.re库的贪婪匹配

re库默认采用贪婪匹配,即输出匹配长的子串

例如

>>> match = re.search(r'PY.*N', 'PYANBNCNDN')   
>>> match.group(0)   
'PYANBNCNDN'

 

那么,如何输出最小的匹配呢

可以在.*后面加个?,就像这样

>>> match = re.search(r'PY.*?N', 'PYANBNCNDN')   
>>> match.group(0) 
'PYAN'

 

还有一些其他的操作符

操作符说明
*? 前一个字符0次或无限次扩展,小匹配
+? 前一个字符1次或无限次扩展,小匹配
?? 前一个字符0次或1次扩展,小匹配
{m,n}? 扩展前一个字符m至n次(含n),最小匹配

正则表达式说明

函数说明
sub(pattern,repl,string) 把字符串中的所有匹配表达式pattern中的地方替换成repl
[^**] 表示不匹配此字符集中的任何一个字符
\u4e00-\u9fa5 汉字的unicode范围
\u0030-\u0039 数字的unicode范围
\u0041-\u005a 大写字母unicode范围
\u0061-\u007a 小写字母unicode范围
\uAC00-\uD7AF 韩文的unicode范围
\u3040-\u31FF 日文的unicode范围

 

标签:字符,abc,匹配,re,Python,正则表达式,转发,字符串
From: https://www.cnblogs.com/xiaoqiujin1012-JR/p/17115845.html

相关文章

  • Python中 字符串的title()方法 首字母大写
    字符串的title方法:1、将字符串中所有单词的首个字母转化为大写,其他字母均转化为小写,特别注意:若在字符串中遇到标点符号、空格、数字等其他非字母元素,则非字母元素后的......
  • python练习记录 2.13
    开始函数部分的学习练习1定义一个函数,此函数能打印一个矩形,自定义函数列数和填充字符 ......
  • 【python】scipy.optimize.curve_fit
    功能使用非线性最小平方差来拟合一个函数功能介绍​​官方文档​​输入参数Valuef函数,它必须以xdata为第一个入参xdata测量的独立数据ydata相关的数据,名义上是f(xdata,…)......
  • 10个用于可解释AI的Python库
    XAI的目标是为模型的行为和决定提供有意义的解释,本文整理了目前能够看到的10个用于可解释AI的Python库什么是XAI?XAI,ExplainableAI是指可以为人工智能(AI)决策过程和预测提......
  • python学习——【第七弹】
    前言学习完python中的序列(​​python学习——【第六弹】​​),这篇文章我们开始学习python中的函数。函数函数就是执行特定任何以完成特定功能的一段代码那么我们为什么要使用......
  • python的几个路径 sys.argv[0],__file__,os.path.curdir
    之前写过一个关于这几个路径的帖子,找不到了,最近又因为这个路径,踩了一把坑,记录一下首先,这三个变量,都是可以用来找到当前脚本所在目录的,sys.argv是参数列表,第一个值,python......
  • Python request
    request  requests¶  get请求¶ In [ ]:importrequestsresponse=requests.get('http://www.baidu.com')#get请求......
  • Python如何创建有声读物
    本文分享一下利用Python的GTTS模块将PDF文本转换为音频,从而将PDF书籍转换为有声读物的脚本:#CreateAudiobooks#pipinstallgTTS#pipinstallPyPDF2fromPyPDF2i......
  • Python飞机大战游戏
    #导入模块顺序:官方标准模块、第三方模块、应用程序模块importrandomimportpygameSCREEN_RECT=pygame.Rect(0,0,480,700)FRAME_PER_SEC=60CREATE_ENEMY_EV......
  • cnblog_fastapi 中的 schemas 和 models 的区别 - python 后端实战经验分享 - Segment
    pythonfastapischema和model的区别ToavoidconfusionbetweentheSQLAlchemymodelsandthePydanticmodels,wewillhavethefilemodel......来自fastapi......