python的re模块总结

  • 一. 一个切分字符串为列表函数;两个替换字符串内容函数;四个查找函数
  • 1.1 四个查找函数findall、finditer、search、match
  • 1.1.1 findall
  • 1.1.1.1 返回所有匹配的字符串的列表
  • 1.1.1.2 括号分组优先显示(如果正则表达式中有分组,则只显示分组内容,而不会显示整体匹配的字符串,如果有多个分组,则以元祖的形式都显示)
  • 1.1.1.2 用?:取消分组优先显示
  • 1.1.2 finditer
  • 1.1.2.1 返回一个包含搜索匹配字符串的re.Match对象的迭代器
  • 1.1.2.2 finditer方法没有分组优先权
  • 1.1.3 search
  • 1.1.3.1 只返回第一个匹配字符串的re.Match对象; 用该对象的group()方法得到字符串
  • 1.1.3.2 如果正则表达式中有分组则group()和group(0)是匹配的整个字符串,group(1), group(2)分别是第一个和第二个分组中的字符串
  • 1.1.4 match
  • 1.1.4.1 match和search方法基本一样,只是必须从头匹配
  • 1.1.4.2 如果正则表达式中有分组则group()和group(0)是匹配的整个字符串,group(1), group(2)分别是第一个和第二个分组中的字符串
  • 1.2 两个替换字符串函数sub、subn
  • 1.2.1 sub
  • 1.2.2 subn
  • 1.3 一个切分字符串为列表函数split
  • 1.3.1 以正则匹配到的字符串来切分字符串,如果正则表达式没有分组则正则匹配的字符串不要
  • 1.3.2 以正则匹配到的字符串来切分字符串,如果正则表达式有分组则分组匹配的字符串要import re


一. 一个切分字符串为列表函数;两个替换字符串内容函数;四个查找函数

1.1 四个查找函数findall、finditer、search、match

1.1.1 findall

1.1.1.1 返回所有匹配的字符串的列表

import  re
reg = ".*?\."
s = "www.sina.com.cn"
res = re.findall(reg, s)
print(res)
结果:
['www.', 'sina.', 'com.']

1.1.1.2 括号分组优先显示(如果正则表达式中有分组,则只显示分组内容,而不会显示整体匹配的字符串,如果有多个分组,则以元祖的形式都显示)

import  re
reg = "(.*?)(\.)"
s = "www.sina.com.cn"
res = re.findall(reg, s)
print(res)
结果:
[('www', '.'), ('sina', '.'), ('com', '.')]

1.1.1.2 用?:取消分组优先显示

import  re
reg = "(?:.*?)(?:\.)"
s = "www.sina.com.cn"
res = re.findall(reg, s)
print(res)
结果:
['www.', 'sina.', 'com.']

1.1.2 finditer

1.1.2.1 返回一个包含搜索匹配字符串的re.Match对象的迭代器

用group()可以得到匹配的字符串

Pythoni18n模块 python模块re_字符串

1.1.2.2 finditer方法没有分组优先权

1.1.3 search

1.1.3.1 只返回第一个匹配字符串的re.Match对象; 用该对象的group()方法得到字符串

import  re
reg = ".*?\."
s = "www.sina.com.cn"
res = re.search(reg, s)
print(res)
print(res.group())
结果:
<re.Match object; span=(0, 4), match='www.'>
www.

1.1.3.2 如果正则表达式中有分组则group()和group(0)是匹配的整个字符串,group(1), group(2)分别是第一个和第二个分组中的字符串

Pythoni18n模块 python模块re_python_02

1.1.4 match

1.1.4.1 match和search方法基本一样,只是必须从头匹配

import  re
reg = "1.*?\."
s = "1www.sina.com.cn"
res = re.match(reg, s)
print(res)
print(res.group())
结果:
<re.Match object; span=(0, 5), match='1www.'>
1www.

1.1.4.2 如果正则表达式中有分组则group()和group(0)是匹配的整个字符串,group(1), group(2)分别是第一个和第二个分组中的字符串

import  re
reg = "(1.*?)(\.)"
s = "1www.sina.com.cn"
res = re.match(reg, s)
print(res)
print(res.group())
print(res.group(0))
print(res.group(1))
print(res.group(2))
结果:
<re.Match object; span=(0, 5), match='1www.'>
1www.
1www.
1www
.

1.2 两个替换字符串函数sub、subn

1.2.1 sub

用正则匹配后替换匹配的字符串后返回这个替换后的字符串

import  re
reg = "(.*?)(\.)"
s = "www.sina.com.cn"
ss = re.sub(reg, "大", s)
print(s)
print(ss)
结果:
www.sina.com.cn
大大大cn

1.2.2 subn

用正则匹配后替换匹配的字符串后返回一个元组(这个替换后的字符串, 替换次数)

import  re
reg = "(.*?)(\.)"
s = "www.sina.com.cn"
ss = re.subn(reg, "大", s)
print(s)
print(ss)
结果:
www.sina.com.cn
('大大大cn', 3)

1.3 一个切分字符串为列表函数split

1.3.1 以正则匹配到的字符串来切分字符串,如果正则表达式没有分组则正则匹配的字符串不要

import  re
reg = ".*?\."
s = "www.sina.com.cn"
lst = re.split(reg, s)
print(lst)
结果:
['', '', '', 'cn']

1.3.2 以正则匹配到的字符串来切分字符串,如果正则表达式有分组则分组匹配的字符串要import re

reg = "(.*?)\."
s = "www.sina.com.cn"
lst = re.split(reg, s)
print(lst)
结果:
['', 'www', '', 'sina', '', 'com', 'cn']