Python中正则表达式的使用

之前已经提到过关于正则表达式的一些基本操作和方法。但是相比于JS,PHP中的操作,Python中的操作有一些特别。
首先,Python中正则匹配成功后返回的不是字符串而是match对象

  1. re.match与re.search的区别

答:re.match位于字符串的开头。它与新行无关,因此它在模式上与^的用法不同。
正如re.match文档所说:

如果在字符串的开头有0个或更多个字符符合正则表达式模式,返回相关匹配的实例对象,如果字符串不符合正则表达式模式则返回None.(注这个跟0长度的匹配是有区别的)
注:如果你想要在字符串中定位任意一个匹配位置的话,请转用search()。

re.search搜索整个字符串,正如re.search文档所说:

扫描整个字符串,如果产生了一个匹配正则模式就寻找到这个位置,返回相关匹配的对象。如果没有位置能够匹配这个模式则返回None.(注意这个跟在字符的某处有0长度的匹配是有区别的。)
所以,如果你想要从字符串的一开始就进行匹配或匹配整个字符串的话就使用match。它更加快速,否则请使用search。

该文档有个专门的章节讲述match和search同样覆盖了多行字符串:

Python根据正则表达式提供两种不同的基本操作:match只在字符串的开始确认一个匹配,而search在字符串的任何匹配的位置都确认。(Perl默认就是这么设置的)
注意即使在使用以^开始的正则表达式时match也可能不同于search:
^只在字符串的开头匹配,或在多行模式立刻紧跟一个新行。
不管出于什么模式,match操作只有在一开始字符串匹配的情况下能够成功,或者在可选参数pos给定的开始位置。(不管在这之前有没有新行)

注释
1.re.match() 从第一个字符开始找, 如果第一个字符就不匹配就返回None, 不继续匹配. 用于判断字符串开头或整个字符串是否匹配,速度快.
2.re.search() 会整个字符串查找,直到找到一个匹配。
3.re.MULTILINE 匹配多行模式。(作为传参的第三个参数)

你可能感兴趣的:(正则表达式)