1.匹配分组
-
():表示一个整体,表示分组,然后捕获
2.匹配分组实例
# 导入re模块
import re
tel = "0755-98776754"
# 定义正则表达式
pattern = "(\\d{4})-(\\d{8})"
result = re.search(pattern, tel)
print(result) # <re.Match object; span=(0, 13), match='0755-98776754'>
print(result.group()) # 0755-98776754
print(result.group(1)) # 0755
print(result.group(2)) # 98776754
print(result.groups()) # ('0755', '98776754')
3.其他功能函数
-
\:表示转义字符,让正则表达式中的字符失去原有的意义
-
.:表示匹配除了换行之外的任意字符,\.就表示一个普通的符号,而不是正则表达式中的.
-
|:表示或者,正则表达式1|正则表达式2|正则表达式3,只要满足其中一个正则表达式即可
# 导入re模块
import re
print(re.search("goog\\.le", "goog.le")) # <re.Match object; span=(0, 7), match='goog.le'>
print(re.search("cd|ef|mn", "133cd987")) # <re.Match object; span=(3, 5), match='cd'>
print(re.search("cd|ef|mn", "133mn987")) # <re.Match object; span=(3, 5), match='mn'>
-
re.compile() 表示编译正则表达式,用于提高正则匹配的效率
# 导入re模块
import re
str = "010-98766789"
# 定义正则表达式,使用re.compile() 进行编译
pattern = re.compile("(\\d{3})-(\\d{8})")
print(pattern.findall(str)) # [('010', '98766789')]
-
re.split() 使用指定的正则表达式切割
# 导入re模块
import re
print(re.split("\\d", "hello123world987welcome999")) # ['hello', '', '', 'world', '', '', 'welcome', '', '', '']
-
re.sub() 或者 re.subn() 使用指定的符号替换内容,re.subn() 会现实替换的次数,re.sub不会显示
# 导入re模块
import re
str1 = "今天 天气 好晴朗,这样的 天气适合出去 游玩......"
print(re.sub("\\s+", "+++", str1)) # 今天+++天气+++好晴朗,这样的+++天气适合出去+++游玩......
print(re.subn("\\s+", "+++", str1)) # ('今天+++天气+++好晴朗,这样的+++天气适合出去+++游玩......', 4)
-
正则表达式匹配中文
# 导入re模块
import re
chinese = "[\u4e00-\u9fa5]+"
print(re.search(chinese, "hello 你好 welcome 欢迎光临....")) # <re.Match object; span=(6, 8), match='你好'>