re.match() 匹配
尝试在字符串的起始处应用该模式,返回一个匹配对象,如果没有找到匹配项,则返回一个对象。
re.match().start() 返回子串匹配组的开始索引
print re.match('Hello','Hello,World!').start()
输出:
0
re.match().end() 返回子串匹配组的结束索引
print re.match('Hello','Hello,World!').end()
输出:
5
re.match().span() 返回一个元组(开始、结束)的子串匹配的组
print re.match('Hello','Hello,World!').span()
输出:
(0, 5)
re.match().group() 返回匹配的一个子组或多个子组
print re.match('Hello','Hello,World!').group()
输出:
Hello
re.search() 搜索
扫描字符串,寻找匹配的模式,返回一个匹配对象,或者如果没有找到匹配。
re.search().start() 返回子串匹配组的开始索引
print re.search('l', 'Hello,Hello,World!').start()
输出:
2
re.search().end() 返回子串匹配组的结束索引
print re.search('l', 'Hello,Hello,World!').end()
输出:
3
re.search().span() 返回一个元组(开始、结束)的子串匹配的组
print re.search('l', 'Hello,Hello,World!').span()
输出:
(2, 3)
re.search().group() 返回匹配的一个子组或多个子组
print re.search('l', 'Hello,Hello,World!').group()
输出:
l
re.sub() 替换
通过复制左边的非重叠出现的字符串的模式替换字符串。
print re.sub(r'b', "a", "ababaaab")
输出:
aaaaaaaa
re.compile() 编译
编译一个正则表达式模式,返回一个模式对象.
通过re.compile把正则表达式编译成对象,会速度快很多.
print re.compile(r'Hello').search(r'Hello,World!').group()
输出:
Hello
正则表达式
标志修饰符
正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。
修饰符 | 描述 |
---|---|
re.I | 忽略大小写 |
re.M | 多行匹配,影响 ^ 和 $ |
re.S | 使 . 匹配包括换行在内的所有字符 |
re.U | 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B. |
re.X | 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。 |
re.L | 做本地化识别locale-aware匹配 |
例:忽略大小写
print re.match('hello','Hello,World!',re.I).span()
输出:
(0, 5)
print re.search('l', 'Hello,Hello,World!',re.M|re.I).start()
输出:
2
常用正则表达式
符号 | 描述 |
---|---|
re1|re2 | 匹配正则式re1或re2 |
. | 匹配任何字符(换行符除外) |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结尾 |
? | 匹配前面出现的正则表达式 0次或1次 |
* | 匹配前面出现的正则表达式 0次或多次 |
+ | 匹配前面出现的正则表达式 1次或多次 |
{n} | 匹配前面出现的正则表达式 n次 |
{m,n} | 匹配前面出现m次到n次的正则表达式 |
[…] | 匹配字符组里出现的任意一个字符 |
[x-y] | 匹配从x到y中的任意一个字符 |
^… | 不匹配字符组里出现的任意一个字符 |
\w | 匹配一个字母或数字,即[A-Za-z0-9] (\W是\w的反义) |
\d | 匹配一个数字,,即[0-9] |
\s | 匹配任何空白字符(\S是\s的反义) |
搜索world或World:
print re.search('w|World', 'Hello,World!').group()
输出:
World