Home > Web Front-end > JS Tutorial > body text

Regular re.sub & re.subn in python

php中世界最好的语言
Release: 2018-03-29 10:57:32
Original
2611 people have browsed it

这次给大家带来python中的正则re.sub & re.subn,使用python中正则re.sub & re.subn的注意事项有哪些,下面就是实战案例,一起来看一下。

python正则表达式模块简介

Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。Python 1.5之前版本则是通过 regex 模块提供 Emacs 风格的模式。Emacs 风格模式可读性稍差些,而且功能也不强,因此编写新代码时尽量不要再使用 regex 模块,当然偶尔你还是可能在老代码里发现其踪影。

就其本质而言,正则表达式(或 RE)是一种小型的、高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现。使用这个小型语言,你可以为想要匹配的相应字符串集指定规则;该字符串集可能包含英文语句、e-mail地址、TeX命令或任何你想搞定的东西。然后你可以问诸如“这个字符串匹配该模式吗?”或“在这个字符串中是否有部分匹配该模式呢?”。你也可以使用 RE 以各种方式来修改或分割字符串。

正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。在高级用法中,也许还要仔细留意引擎是如何执行给定 RE ,如何以特定方式编写 RE 以令生产的字节码运行速度更快。本文并不涉及优化,因为那要求你已充分掌握了匹配引擎的内部机制。

正则表达式语言相对小型和受限(功能有限),因此并非所有字符串处理都能用正则表达式完成。当然也有些任务可以用正则表达式完成,不过最终表达式会变得异常复杂。碰到这些情形时,编写 Python 代码进行处理可能反而更好;尽管 Python 代码比一个精巧的正则表达式要慢些,但它更易理解。

正则表达式一个比较常见的用途是找到所有模式匹配的字符串并用不同的字符串来替换它们。sub方法提供一个替换值,可以是字符串或函数,和一个要被处理的字符串。

Grammar:

re.sub(pattern, repl, string[, count])
Copy after login

使用repl替换string中每一个匹配的子串后返回替换后的字符串。

当repl是一个字符串时,可以使用\id或\g、\g引用分组,但不能使用编号0。

当repl是一个方法时,这个方法应当只接受一个参数(Match对象),并返回一个字符串用于替换(返回的字符串中不能再引用分组)。

count用于指定最多替换次数,不指定时全部替换。

re.subn(pattern, repl, string[, count])
Copy after login

返回 (sub(repl, string[, count]), 替换次数)。

Case:

#coding=utf-8
import re
str = "https://i.cnb1logs.co2m/Edi3tPosts.asp4x?opt=999"
pattern=re.compile(r'(\.)')
print '\.     :' ,re.sub(pattern,'-',str)
pattern=re.compile(r'\/([^*]+)\/')
print '\/([^*]+)\/ :' ,re.sub(pattern,r'<em>\1<em>',str)
pattern = re.compile(r'(\w+)(\w+)(\d+)')
#先切片测试
print re.split(pattern,str)
print re.sub(pattern,r'\3 \1',str)
#subn统计sub替换次数
print re.subn(pattern,r'\3 \1',str)
Copy after login

Output

\.     : https://i-cnb1logs-co2m/Edi3tPosts-asp4x?opt=999
\/([^*]+)\/ : https:<em>/i.cnb1logs.co2m<em>Edi3tPosts.asp4x?opt=999
['https://i.', 'cn', 'b', '1', 'logs.', 'c', 'o', '2', 'm/', 'Ed', 'i', '3', 'tPosts.', 'as', 'p', '4', 'x?opt=', '9', '9', '9', '']
https://i.1 cnlogs.2 cm/3 EdtPosts.4 asx?opt=9 9
('https://i.1 cnlogs.2 cm/3 EdtPosts.4 asx?opt=9 9', 5)
***Repl Closed***
Copy after login

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

正则表达式的\D元字符(等价于"[^0-9]")使用详解

验证用户设置的密码强度正则表达式

The above is the detailed content of Regular re.sub & re.subn in python. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template