Python 正则表达式

Submitted by Lizhe on Fri, 05/19/2017 - 15:45

正则表达式语法在这里就不提及了,主要是熟悉一下python的api

import re;
 
abcRegex = re.compile("abc");
mo = abcRegex.search("abc123");
print(mo.group());

这个例子太简单了, group方法会返回abc, 语法上也和javascript的正则差不多

分组的写法是

import re;
 
abcRegex = re.compile("(abc)(123)");
mo = abcRegex.search("abc123abc");
print(mo.group(1));
print(mo.group(2));

输出是

abc
123

python的正则表达式默认是贪心模式

如果你要查找3个或者5个相同字符串,它会尽量匹配5个

hahaRegex = re.compile("(ha){3,5}");
mo = hahaRegex.search("hahahahaha");
print(mo.group());

上面的代码会给出

hahahahaha

要改成非贪心模式的话需要在表达式末尾加一个?

hahaRegex = re.compile("(ha){3,5}?");
mo = hahaRegex.search("hahahahaha");
print(mo.group());

结果为

hahaha

python还提供一种返回数组的findall方法

abcRegex = re.compile("\d");
mo = abcRegex.findall("a1b2c3d4");
print(mo);
['1', '2', '3', '4']

如果不想区分大小写的话可以使用 re.IGNORECASE 或者 re.I

abcRegex = re.compile("B",re.IGNORECASE);
mo = abcRegex.findall("a1b2c3d4");
print(mo);
['b']

 

sub() 方法可以用来替换匹配的文本

abcRegex = re.compile("B",re.IGNORECASE);
mo = abcRegex.sub("B",'abcd');
print(mo);
aBcd