python 中 正则表达式 的应用
2014-11-13 23:06
337 查看
python 中 正则表达式 的应用
最近作业中出现了正则表达式,顺便学习了一下。python比较厉害的一点就是自带对正则表达式的支持,用起来很方便
正则表达式
首先介绍一下什么是正则表达式。正则表达式是用来进行字符串匹配的工具,在模式匹配中有广泛的应用。
正则表达式用若干符号来描述符合某一语法规则的字符串,从而实现匹配。
关于正则表达式的语法,参见维基百科,介绍的非常详细了。
一个用正则表达式写成的字符串也被成为模式串,意思是我们可以用这个串进行模式匹配。
python中正则表达式的应用
python内置了对正则表达式的支持,只需要import re即可使用正则表达式
有关python的re模块,最详细的资料莫过于python的官方文档,这里挑一些最常用的介绍一下。
正则表达式对象
首先,如果你想用正则表达式进行匹配,我们需要建立一个regular expression object,也就是所谓的正则表达是对象。python的re模块都是基于正则表达式对象进行操作的。要想创建一个正则表达式对象,需要使用
re.complie().其函数原型为
re.complie(pattern, flags=0),pattern是一个字符串型,代表模式串,而flags是可选的,用于特殊情况的处理。比如re.I就表示匹配时忽略大小写,还有其他的flag可以参考官方文档。
例如,
a=re.complie(r'abc\W*',re.I)的意思就是创建了一个正则表达式对象a,这个对象可以用来在忽略大小写的情况下匹配所有以abc开头的单词。
另外注意一点在写模式串的时候通常要用r字符串来抑制转义。
匹配函数
有了正则表达式对象,我们就可以进行匹配了。(下文中a代表刚才创建的正则表达式对象)通常用于匹配的有两个函数,
re.match()和
re.search(),下面分别介绍
re.match()
这个函数是对一个单词从头进行匹配。如果我们已经有了一个正则表达是对象,我们可以直接使用
a.match(string)来进行匹配,其中string是一个字符串,代表我们试图去跟模式串匹配的字符串。如果match成功,函数会返回一个MatchObject,即Match对象,否则返回
None对象。例如
s1=a.match("aBcddD") print(s1) s2=a.match("abdfd") print(s2)
其结果为
<_sre.SRE_Match object at 0x7fc8856f0370> None
其中具体地址可能不一样,但是一定是一个Match object。
另外,
re.match()可以直接完成创建正则表达式并进行匹配的任务,具体方法为使用
re.match(pattern, string, flags=0),其中各参数的含义和
re.complie()相同,string是待匹配字符串。
例如
print (re.match(r'abc\W*',"aBcddD",re.I)) print (re.match(r'abc\W*',"abdfd",re.I))
其结果和上面的相同。
re.search()
这个函数和
re.match()完全类似,唯一的区别是
re.search()可以从一个字符串中的任意位置开始匹配,而
re.match()只能从开头进行匹配。
例如
print (re.match(r'abc\W*',"wwaBcddD",re.I)) print (re.search(r'abc\W*',"wwaBcddD",re.I))
其输出为
None <_sre.SRE_Match object at 0x7fc8856f0370>
MatchObject
通过上述的匹配函数,如果匹配成功,我们就会获得一个MatchObject,即Match对象。要想获得匹配的结果,我们需要对Match对象进行操作。Match对象的常用的几个操作如下group
re.group()函数用于获得MatchObject中的匹配成功的字符串。如果我们对于一个MatchObject调用
group()函数就可以获得匹配成功的的字符串。例如
>>> m = re.match(r"(\w+) (\w+)", "Isaac Newton, physicist") >>> m.group(0) # The entire match 'Isaac Newton' >>> m.group(1) # The first parenthesized subgroup. 'Isaac' >>> m.group(2) # The second parenthesized subgroup. 'Newton' >>> m.group(1, 2) # Multiple arguments give us a tuple. ('Isaac', 'Newton')
其中group(0)表示所有匹配字符串,而group(i)的表示具体第i个匹配字符串。
start()和
end()
start()和
end()分别表示匹配开始的位置和匹配结束的位置。
本文仅介绍了re模块中几个最常用的部分,另外还有re.findall(),re.finditer,re.sub()等函数,具体可以参考官方文档。
恩,就这么写完了,真是良(jian)心(lue)啊√
相关文章推荐
- Python 正则表达式高级应用举例
- Python中正则表达式的应用
- python 3.6 正则表达式的应用(附实例代码)
- Python正则表达式应用示例
- Python中正则表达式应用
- Python 正则表达式的应用(十二)
- Python开发基础-Day15正则表达式爬虫应用,configparser模块和subprocess模块
- python基础之正则表达式爬虫应用,configparser模块和subprocess模块
- python中正则表达式的应用
- Python 爬虫小程序(正则表达式的应用)
- python应用regex正则表达式模块re
- Python 正则表达式替换应用 (用文本中一部分替换另一部分)
- Python 正则表达式应用【转载】
- python--正则表达式应用
- Python网页抓取正则表达式应用练习-爬取基金信息
- 正则表达式re中的贪心算法和非贪心算法 在python中的应用
- Python高级——正则表达式 re模块 2.高级应用
- 学习正则表达式在python中的应用
- python学习之正则表达式应用
- python 正则表达式应用——缩写词扩充