您的位置:首页 > 其它

第一章:文本-re:正则表达式-查找文本中的模式

2019-01-27 07:53 281 查看

1.3 re:正则表达式
正则表达式(regular expression)是用一种形式化语法描述的文本匹配模式。模式会被解释为一组指令,然后执行这些指令并提供一个字符串作为输入,将生成一个匹配子集或者生成原字符串的一个修改版本。“正则表达式”在讨论中经常简写为“regex”或“regexp”。表达式可以包含字面量文本匹配、重复、模式组合、分支和其他复杂的规则。与创建一个特定用途的词法分析器和解析器相比,利用正则表达式,很多解析问题可以更容易地得到解决。
正则表达式通常用于涉及大量文本处理的应用中。例如,在开发人员使用的文本编辑程序中,包括vi、emacs和其他现代IDE,通常使用正则表达式作为搜索模式。正则表达式也算UNIX命令行工具的一个不可缺少的组成部分,如sed、grep和awk。很多编程语言在语言语法中都包含了对正则表达式的支持(如Perl、Ruby、Awk和Tel);另外一些语言(如C、C++和Python)则通过扩展库来支持正则表达式。
已经有很多开源的正则表达式实现,它们有一个共同的核心语法,不过提供了不同的扩展或修改来支持其高级特性。Python的re模块中使用的语法以Perl使用的正则表达式语法为基础,另外还有一些Python特定的改进。
说明:尽管“正则表达式”的正式定义仅限于描述正则语言的表达式,不过re支持的一些扩展不只是能描述正则语言。这里使用的“正则表达式”有更一般的含义,是指可以用python的re模块计算的所有表达式。

1.3.1 查找文本中的模式
re最常见的用法是搜索文本中的模式。search()函数取模式和要扫描的文本作为输入,找到这个模式时,就返回以Match对象。如果没有找到模式,search()将返回None.
每个Match对象包含有关匹配性质的信息,包括原输入字符串、所使用的正则表达式以及模式在原字符串中出现的位置。

import re

pattern = 'this'
text = 'Does this text match the pattern?'

match = re.search(pattern,text)

s = match.start()
e = match.end()

print('Found "{}"\nin "{}"\nfrom {} to {} ("{}")'.format(
match.re.pattern,match.string,s,e,text[s:e]))

start()和end()方法可以提供字符串中的相应索引,指示与模式匹配的文本在字符串中出现的位置。

运行结果:

Found “this”
in “Does this text match the pattern?”
from 5 to 9 (“this”)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: