python re模块

栏目: Python · 发布时间: 6年前

内容简介:python re模块

一、单字符匹配

字符 功能
. 匹配任意1个字符(除了\n)
[ ] 匹配[ ]中列举的字符
\d 匹配数字,即0-9
\D 匹配非数字,即不是数字
\s 匹配空白,即 空格,tab键,\n
\S 匹配非空白
\w 匹配单词字符,即a-z、A-Z、0-9、_
\W 匹配非单词字符

二、表示数量

字符 功能
* 匹配前一个字符出现0次或者无限次,即可有可无
+ 匹配前一个字符出现1次或者无限次,即至少有1次
? 匹配前一个字符出现1次或者0次,即要么有1次,要么没有
{m} 匹配前一个字符出现m次
{m,} 匹配前一个字符至少出现m次
{m,n} 匹配前一个字符出现从m到n次

三、表示边界

字符 功能
^ 匹配字符串开头
$ 匹配字符串结尾
\b 匹配一个单词的边界
\B 匹配非单词边界

四、分组

字符 功能
| 匹配左右任意一个表达式
(ab) 将括号中字符作为一个分组
\num 引用分组num匹配到的字符串
(?P<name>) 分组起别名
(?P=name) 引用别名为name分组匹配到的字符串

五、标志

修饰符 描述
re.I 使匹配对大小写不敏感
re.L 做本地化识别(locale-aware)匹配
re.M 多行匹配,影响 ^ 和 $
re.S 使 . 匹配包括换行在内的所有字符
re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

六、match方法

match(pattern, string, flags=0)
        Try to apply the pattern at the start of the string, returning  从字符串头开始匹配
        a match object, or None if no match was found.
参数 描述
pattern 匹配的正则表达式
string 要匹配的字符串。
flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等
 1 import re
 2 
 3 ret = re.match('com', 'www.baidu.com')
 4 print(ret)                 # None
 5 
 6 ret = re.match('(w)(w)(w)', 'www.baidu.com')
 7 print(type(ret))           # <class '_sre.SRE_Match'>
 8 
 9 '''
10 得到的是Match对象
11 属性:
12 string: 匹配时使用的文本。
13 re: 匹配时使用的Pattern对象。
14 pos: 文本中正则表达式开始搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
15 endpos: 文本中正则表达式结束搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
16 lastindex: 最后一个被捕获的分组在文本中的索引。如果没有被捕获的分组,将为None。
17 lastgroup: 最后一个被捕获的分组的别名。如果这个分组没有别名或者没有被捕获的分组,将为None。
18 方法:
19 group([group1, …]):
20 获得一个或多个分组截获的字符串;指定多个参数时将以元组形式返回。group1可以使用编号也可以使用别名;编号0代表整个匹配的子串;不填写参数时,返回group(0);没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串。
21 groups([default]): 
22 以元组形式返回全部分组截获的字符串。相当于调用group(1,2,…last)。default表示没有截获字符串的组以这个值替代,默认为None。
23 groupdict([default]):
24 返回以有别名的组的别名为键、以该组截获的子串为值的字典,没有别名的组不包含在内。default含义同上。
25 start([group]): 
26 返回指定的组截获的子串在string中的起始索引(子串第一个字符的索引)。group默认值为0。
27 end([group]):
28 返回指定的组截获的子串在string中的结束索引(子串最后一个字符的索引+1)。group默认值为0。
29 span([group]):
30 返回(start(group), end(group))。
31 expand(template): 
32 将匹配到的分组代入template中然后返回。template中可以使用\id或\g<id>、\g<name>引用分组,但不能使用编号0。\id与\g<id>是等价的;但\10将被认为是第10个分组,如果你想表达\1之后是字符'0',只能使用\g<1>0。
33 '''
34 
35 print(ret.lastgroup)       # None
36 print(ret.lastindex)       # 3
37 print(ret.pos)             # 0
38 print(ret.endpos)          # 13
39 print(ret.re)              # re.compile('(w)(w)(w)')
40 print(ret.regs)            # ((0, 3), (0, 1), (1, 2), (2, 3))
41 print(ret.string)          # www.baidu.com
42 
43 print(ret.start())         # 0
44 print(ret.end())           # 3
45 print(ret.span())          # (0, 3)
46 print(ret.group())         # www
47 print(ret.groups())        # ('w', 'w', 'w')
48 print(ret.groupdict())     # {}
49 print(ret.expand(r'\1-\2-\3'))   # w-w-w

七、search方法


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

You Can Program in C++

You Can Program in C++

Francis Glassborow / John Wiley & Sons / 2006-7 / 406.80元

An interactive and fun way to learn C++, one of the most popular high-level programming languages for graphic applications This unique, hands-on approach to learning C++ makes t......一起来看看 《You Can Program in C++》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器