首页 后端开发 Python教程 Python正则表达式【1】

Python正则表达式【1】

Feb 07, 2017 pm 04:28 PM
python 正则表达式

本文来说说Python的正则表达式。

废话不多说了,先开始最简单的:

'.':可以匹配除换行符以外的任意单个字符(就是个点)。

'*'可以匹配前面的子表达式零次或多次(就是个星号)。

所以上面两个的组合'.*'(点星)就是匹配除换行符以外的所有。

'+':重复一次或更多次。

'?':重复零次或一次。

'\d':匹配一个数字字符。等价于 [0-9]。

'\w'匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。

'/s'匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]

'^'匹配输入字符串的开始位置。

'$'匹配输入字符串的结束位置。

上面这几个超级常用,当然常用的还有很多,需要的时候请查手册。

这样描述不够直观,直接敲实验。想在Python里使用正则表达式很简单,直接导入re即可:

>>> import re

>>>

先试试匹配所有:

>>> vlan = 'switchport access vlan 612'
>>> ljds = re.search('.*',vlan).group()
>>> ljds
'switchport access vlan 612'
登录后复制

再试试匹配数字:

>>> ljds = re.search('\d',vlan).group()
>>> ljds
'6'
登录后复制

因为'/d'是匹配一个数字,所以如果要匹配这里的‘612’,三个数字,可以加上'{3}':

>>> ljds = re.search('\d{3}',vlan).group()
>>> ljds
登录后复制

'612'

同理,如果要匹配13个字符(包括空格):

>>> ljds = re.search('[\w\s]{13}',vlan).group()
>>> ljds
'switchport ac'
登录后复制

这里还想提一下正则表达式的量词里面涉及到贪婪和非贪婪模式,贪婪就是取最大值,尽可能多的匹配。非贪婪就正好相反(默认是贪婪模式)。举例说明:

刚才上面是匹配13个字符,如果写成匹配2到10个字符就写成:'[\w\s]{2,10}'即可,那么到底匹配的是2个还是10个呢?因为默认是贪婪模式,它会最大的匹配:

>>> ljds = re.search('[\w\s]{2,10}',vlan).group()
>>> ljds
'switchport'
登录后复制

在量词后面加个问号'?',就切换到了非贪婪模式,即最小匹配:

>>> ljds = re.search('[\w\s]{2,10}?',vlan).group()
>>> ljds
'sw'
登录后复制

接下来介绍一下“捕获”了:

(exp):匹配exp。

(?=exp):匹配exp前面的位置。

(?<=exp):匹配exp后面的位置。

>>> vlan = 'switchport access vlan 612'

最基础的:

>>> ljds = re.search(&#39;(access)&#39;,vlan).group()
>>> ljds
&#39;access&#39;
登录后复制

匹配'access'之前的任意字符:

>>> ljds = re.search(&#39;.*(?=access)&#39;,vlan).group()
>>> ljds
&#39;switchport &#39;
登录后复制

匹配'vlan'之后的任意字符:

>>> ljds = re.search(&#39;(?<=vlan).*&#39;,vlan).group()
>>> ljds
&#39; 612&#39;
登录后复制

OK,学到这里,再看看之前捕获路由器名称的正则表达式:

DeviceName = re.search(&#39;.*(?=#show run)&#39;,telreply).group()
登录后复制

以上就是Python正则表达式【1】的内容,更多相关内容请关注PHP中文网(www.php.cn)!


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

XML如何修改注释内容 XML如何修改注释内容 Apr 02, 2025 pm 06:15 PM

对于小型XML文件,可直接用文本编辑器替换注释内容;对于大型文件,建议借助XML解析器进行修改,确保效率和准确性。删除XML注释时需谨慎,保留注释通常有助于代码理解和维护。进阶技巧中提供了使用XML解析器修改注释的Python示例代码,但具体实现需根据使用的XML库进行调整。修改XML文件时注意编码问题,建议使用UTF-8编码并指定编码格式。

手机XML转PDF,转换速度快吗? 手机XML转PDF,转换速度快吗? Apr 02, 2025 pm 10:09 PM

手机XML转PDF的速度取决于以下因素:XML结构的复杂性手机硬件配置转换方法(库、算法)代码质量优化手段(选择高效库、优化算法、缓存数据、利用多线程)总体而言,没有绝对的答案,需要根据具体情况进行优化。

XML修改内容需要编程吗 XML修改内容需要编程吗 Apr 02, 2025 pm 06:51 PM

修改XML内容需要编程,因为它需要精准找到目标节点才能增删改查。编程语言有相应库来处理XML,提供API像操作数据库一样进行安全、高效、可控的操作。

有什么手机APP可以将XML转换成PDF? 有什么手机APP可以将XML转换成PDF? Apr 02, 2025 pm 08:54 PM

无法找到一款将 XML 直接转换为 PDF 的应用程序,因为它们是两种根本不同的格式。XML 用于存储数据,而 PDF 用于显示文档。要完成转换,可以使用编程语言和库,例如 Python 和 ReportLab,来解析 XML 数据并生成 PDF 文档。

如何在protobuf中定义枚举类型并关联字符串常量? 如何在protobuf中定义枚举类型并关联字符串常量? Apr 02, 2025 pm 03:36 PM

在protobuf中定义字符串常量枚举的问题在使用protobuf时,常常会遇到需要将枚举类型与字符串常量进行关联的情�...

XML转换成图片的流程是什么? XML转换成图片的流程是什么? Apr 02, 2025 pm 08:24 PM

XML 转换图片需要先确定 XML 数据结构,再选择合适的图形化库(如 Python 的 matplotlib)和方法,根据数据结构选择可视化策略,考虑数据量和图片格式,进行分批处理或使用高效库,最终根据需求保存为 PNG、JPEG 或 SVG 等格式。

xml格式怎么打开 xml格式怎么打开 Apr 02, 2025 pm 09:00 PM

用大多数文本编辑器即可打开XML文件;若需更直观的树状展示,可使用 XML 编辑器,如 Oxygen XML Editor 或 XMLSpy;在程序中处理 XML 数据则需使用编程语言(如 Python)与 XML 库(如 xml.etree.ElementTree)来解析。

如何在手机上高质量地将XML转换成PDF? 如何在手机上高质量地将XML转换成PDF? Apr 02, 2025 pm 09:48 PM

在手机上高质量地将XML转换成PDF需要:使用无服务器计算平台在云端解析XML并生成PDF。选择高效的XML解析器和PDF生成库。正确处理错误。充分利用云端计算能力,避免在手机上进行繁重任务。根据需求调整复杂度,包括处理复杂的XML结构、生成多页PDF和添加图片。打印日志信息以帮助调试。优化性能,选择高效的解析器和PDF库,并可能使用异步编程或预处理XML数据。确保良好的代码质量和可维护性。

See all articles