如何在Python中使用re正则表达式模块

  介绍

这篇文章给大家介绍如何在Python中使用re正则表达式模块,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Python中的正则跟其他语言相比略有差异:

1,替换字符串时,替换的字符串可以是一个函数
2,分裂函数可以指定分割次数,这会导致有个坑
3,前项界定的表达式必须定长

下面详细描述下再保险模块的使用方法,其实,注意上面提到的三点差异就好

<强> 1,匹配

说明:
再保险。匹配尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,匹配()就返回没有。

语法:
再保险。匹配(模式、字符串、旗帜=0)

标记为可选标识,多个标识可以通过按位或(|)来指定。如re.I | re.M被设置成我和M标识:

修饰符

描述

re.I

使匹配对大小写不敏感

re.L

做本地化识别(识别地区)匹配

再保险。M

多行匹配,影响^和$

再保险。S

使。匹配包括换行在内的所有字符

再保险。U

根据Unicode字符集解析字符。这个标志影响\ w \ w, \ b \ b .

re.X

该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

匹配成功re.match方法返回一个匹配的对象,可以使用组(num)或组()匹配对象函数来获取匹配表达式.group()或组(0),返回整个正则表达式的匹配结果。

举例:

s=, & # 39; abc123abc& # 39;      打印(re.match (& # 39; [a - z] + & # 39;,, s)) #, & lt; _sre.SRE_Match 对象;,跨度=(0,,3),匹配=& # 39;abc # 39;比;      打印(re.match (& # 39; [a - z] + & # 39;,, s) .group (0)) #, abc   打印(re.match (& # 39; (\ d) + & # 39;,, s)) #,没有   打印(re.match (& # 39; [a - z] + & # 39;,,,, re.I) .group (0)), # abc   print (re.match (& # 39; [a - z] + & # 39;,, s) .span ()) #, (0,, 3)

<强> 2,搜索

说明:
再保险。搜索扫描整个字符串并返回第一个成功的匹配。

语法:
再保险。搜索(模式、字符串、旗帜=0)

匹配成功re.search方法返回一个匹配的对象,否则返回没有。可以使用组(num)或组()匹配对象函数来获取匹配表达式。

s =, & # 39; abc123abc& # 39;      打印(re.search (& # 39; [a - z] + & # 39;,, s) .group ()) #, abc   打印(re.search (& # 39; [a - z] + & # 39;,, s) .span ()), #, (0,, 3)   打印(re.search (& # 39; (\ d) + & # 39;,, s) .group ()), # 123   打印(re.search (& # 39; (\ d) + & # 39;,, s) .span ()), #, (3), 6)   打印(re.search (& # 39; xyz # 39;,, s)), #,没有

groupdict
groupdict返回匹配到的所有命名子组的字典。

打印(re.search (& # 39; [a - z] + & # 39;,, s) .groupdict ()),,,, # {}      print (re.search(& # 39;(?术;letter> [a - z] +)(?术;num> \ d +) & # 39;,, s) .groupdict ()), #, {& # 39; num # 39;:, & # 39; 123 & # 39;,, & # 39;信# 39;:,& # 39;abc # 39;}

<强> 3,子和subn

说明:
re.sub用于替换字符串中的匹配项。

再保险。subn返回一个元组,包含替换后的字符串及替换次数。

语法:
子(模式,repl,字符串,数=0,旗帜=0)

repl:替换的字符串,也可为一个函数。

数:模式匹配后替换的最大次数,默认0表示替换所有的匹配。

举例:

s =, & # 39; abc123abc& # 39;      打印(re.sub (& # 39; (\ d) + & # 39;,, & # 39;数字& # 39;,,s)),, #, abc数字abc   打印(re.sub (& # 39; [a - z] + & # 39;,, & # 39;字母& # 39;,,,,1)),#,字母123 abc         #,将匹配的数字乘以,2   def 双(匹配):   ,value =, int (matched.group(& # 39;价值# 39;))   ,return  str (* value  2)         #,repl是一个函数   打印(re.sub(& # 39;(?术;value> \ d +) & # 39;,,,,)) #, abc246abc   打印(re.subn (& # 39; (\ d) + & # 39;,, & # 39;数字& # 39;,,s)), #, (& # 39; abc数字abc # 39;,, 1)   打印(re.subn (& # 39; [a - z] + & # 39;,, & # 39;字母& # 39;,,,))#,(& # 39;字母123字母& # 39;,,2)   print (re.subn (& # 39; [a - z] + & # 39;,, & # 39;字母& # 39;,,,,1)),#,(& # 39;字母123字母& # 39;,,1)

<强> 4,编译

说明:
re.compile用于编译正则表达式,生成一个正则表达式(模式)对象,供匹配搜索()和()这两个函数使用。

语法:
编译(模式、旗帜=0)

举例:

s =, & # 39; abc123abc& # 39;      时间=p  re.compile (& # 39; (\ d) + & # 39;)      打印(p.match(年代,,4,,5).group(0)), #, 2,从位置4开始匹配到位置5   print (p.search (s) .group (0)),,, #, 123

如何在Python中使用re正则表达式模块