python re 匹配多行_Python的re正则表达式模块

Python 的 re 模块,使得Python具备了使用全部正则表达式的功能

Python中的正则表达式

正则匹配的时候,第一个字符是 r,表示 raw string 原生字符,意在声明字符串中间的特殊字符不用转义. r前缀与regex并不特别相关,但通常与Python中的字符串有关.

>>> print 'this is n a test'
this is 
 a test
>>> print r'this is n a test'
this is n a test
>>> 

re.compile() 函数

compile 函数用于编译正则表达式,生成一个 Pattern 对象,它的一般使用形式如下:

re.compile(pattern[, flag])

其中,pattern 是一个字符串形式的正则表达式,flag 是一个可选参数,表示匹配模式,比如忽略大小写,多行模式等。

下面,让我们看看例子。

import re

# 将正则表达式编译成 Pattern 对象 
pattern = re.compile(r'd+')

在上面,我们已将一个正则表达式编译成 Pattern 对象,接下来,我们就可以利用 pattern 的一系列方法对文本进行匹配查找了。Pattern 对象的一些常用方法主要有:

  • match 方法
  • search 方法
  • findall 方法
  • finditer 方法
  • split 方法
  • sub 方法
  • subn 方法

re.match(pattern, string, flags)

第一个参数是正则表达式,如果匹配成功,则返回一个Match,否则返回一个None;第二个参数表示要匹配的字符串;第三个参数是标致位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

函数的返回值为真或者假。


例如:match(‘p’,’python’)返回值为真;match(‘p’,’http://wwww.python.org’)返回值为假。

re.search(pattern, string, flags)

每个参数的含意与re.match一样。

re.search会在给定字符串中寻找第一个匹配给定正则表达式的子字符串。

函数的返回值:如果查找到则返回查找到的值,否则返回为None。

re.findall(pattern, string[, flags])

findall 以列表形式返回全部能匹配的子串,如果没有匹配,则返回一个空列表

l = re.findall(r'张','张三 张三丰 张无忌 张小凡')

print(l)  

['张', '张', '张', '张']

在这个例子中,我们会发现findall返回了所有匹配的值,这是因为“张”字在后面的字符串中出现了4次。

re.split()

string 对象的 split() 方法只适应于非常简单的字符串分割情形, 它并不允许有多个分隔符或者是分隔符周围不确定的空格。 当你需要更加灵活的切割字符串的时候,最好使用 re.split() 方法:

>>> line = 'asdf fjdk; afed, fjek,asdf, foo' 
>>> import re 
>>> re.split(r'[;,s]s*', line) 
['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']
https://wiki.jikexueyuan.com/project/explore-python/Regular-Expressions/re.html​wiki.jikexueyuan.com

flags参数

re.I
    IGNORECASE
    忽略字母大小写

re.L
    LOCALE
    影响 “w, “W, “b, 和 “B,这取决于当前的本地化设置。

re.M
    MULTILINE
    使用本标志后,‘^’和‘$’匹配行首和行尾时,会增加换行符之前和之后的位置。

re.S
    DOTALL
    使 “.” 特殊字符完全匹配任何字符,包括换行;没有这个标志, “.” 匹配除了换行符外的任何字符。

re.X
    VERBOSE
    当该标志被指定时,在 RE 字符串中的空白符被忽略,除非该空白符在字符类中或在反斜杠之后。
    它也可以允许你将注释写入 RE,这些注释会被引擎忽略;
    注释用 “#”号 来标识,不过该符号不能在字符串或反斜杠之后。
Python 正则表达式 flags 参数​blog.csdn.net
v2-3d6f0b0cdd7632882b0ca6d20143ea66_ipico.jpg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值