c语言编程笔录

首页 >   > 笔记大全

笔记大全

利用Python正则表达式进行字符串匹配和替换

更新时间:2023-07-10

什么是正则表达式

正则表达式,又称规则表达式,是一种用来描述特定模式的文本字符串。Python中的正则表达式是通过re模块实现的。使用正则表达式可以进行字符串的匹配和替换,非常方便实用。

import re
line = 'hello world'
matchObj = re.match( r'(.*) (.*)', line, re.M|re.I)
if matchObj:
    print("matchObj.group() : ", matchObj.group())
    print("matchObj.group(1) : ", matchObj.group(1))
    print("matchObj.group(2) : ", matchObj.group(2))
else:
    print("No match!!")

正则表达式的匹配模式

正则表达式有很多种匹配模式,常用的有以下几种:

  • ^ 匹配字符串的开头
  • $ 匹配字符串的末尾
  • . 匹配任意字符
  • * 匹配零个或多个前面的字符
  • + 匹配一个或多个前面的字符
  • ? 匹配零个或一个前面的字符
  • {n} n是非负整数,匹配前面的字符恰好n次
  • {n,} n是非负整数,匹配前面的字符至少n次
  • {n,m} n和m是非负整数,匹配前面的字符至少n次,至多m次
  • [] 匹配括号内的任意一个字符
  • | 匹配从左到右的任意一个表达式
  • () 将表达式分组,后面可以使用\1, \2, \3等来引用分组
import re
phone = "2004-959-559 # 这是一个电话号码"
# 删除注释
num = re.sub(r'#.*$', "", phone)
print("电话号码是: ", num)
# 移除非数字的内容
num = re.sub(r'\D', "", phone)
print("电话号码是 : ", num)

正则表达式的分组

为了更好地应用正则表达式进行字符串匹配和替换,我们可以使用分组功能。分组指的是用一对圆括号将一个或多个表达式括起来,分成一个组,从而方便后面使用\1, \2, \3等来引用分组。

import re
# 匹配电话号码
phone = "2004-959-559 # 这是一个电话号码"
# 匹配电话号码的正则表达式
pattern = r'(\d{4})-(\d{3})-(\d{3})'
# 搜索电话号码
matchObj = re.search(pattern, phone)
# 打印搜索出来的电话号码
if matchObj:
    print("matchObj.group() : ", matchObj.group())
    print("matchObj.group(1) : ", matchObj.group(1))
    print("matchObj.group(2) : ", matchObj.group(2))
    print("matchObj.group(3) : ", matchObj.group(3))
else:
    print("No match!!")

正则表达式的应用场景

正则表达式在程序开发中应用非常广泛,比如说对于从网络中爬取到的HTML网页,我们通常需要将其中的一些内容提取出来并保存下来。这个时候就可以使用Python的正则表达式进行字符串的匹配和替换。

此外,正则表达式还可以应用于输入验证,比如验证一个邮箱、手机号或者密码是否符合一定规则,从而保证输入的正确性和安全性。

import re
# 验证邮箱格式是否正确
email = "example@mail.com"
pattern = r'^[a-zA-Z0-9._%-]+@[a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}$'
if re.match(pattern, email):
    print("邮箱格式正确")
else:
    print("邮箱格式错误")