. :表示匹配除了换行符之外的任意字符
\:转义字符
[a-z]:匹配a-z里面的任意一个字符
\d:匹配数字 [0-9]
\D:匹配非数字 [^\d]
\s:匹配空白字符(空格,\n,\t....)
\S:匹配非空白字符
\w:匹配单词字符(A-Za-z0-9)
\W:匹配非单词字符
^:匹配以。。。开头
$:匹配以。。。结尾
():分组
|:或
:匹配前的字符任意次数
?:匹配前的字符0次或1次
+:匹配前的字符1次或多次
{m}:匹配{m}前的字符m次
{m,n}:匹配{m,n}前的字符m-n次
.*?匹配空格
匹配换行 re.S
非贪婪匹配
*?
+?
??
{m,n}?
import re
sub_str = 'abcdefabcd'
pattern = re.compile('b')
result = re.match(pattern,sub_str)
print(type(result))
if result:
print(result.group())
re.compile()把正则表达式构建一个pattern对象
re.match()从字符串的起始位置开始匹配,开头就必须符合正则规则,如果匹配到了就返回结果,匹配不到返回None
在整个字符串进行匹配,匹配到结果立即返回,匹配不到返回None
result=re.search(pattern,sub_str)
print(result.group())
在整个字符串进行匹配,匹配出所有符合正则规则的结果,以列表的形式返回
result = re.findall(pattern,sub_str)
print(result)
result = re.finditer(pattern,sub_str)
print(type(result))
for note in result:
print(type(note))
print(note.group())
替换
url = 'http://baidu.com/s?kw=aaaa&pn=20'
pattern=re.compile('pn=\d+')
result=re.sub(pattern,'pn=30',url)
print(result)
sub后面跟的参数
pattern:正则规则
repl:要替换的字符串
string:原始字符串
pattern = re.compile('[=:&]')
result = re.split(pattern,url)
print(result)