Python 正则匹配字符串

Python 正则匹配字符串

Python 正则匹配字符串

正则表达式是用来描述一组字符串匹配规则的表达式,它提供了一种灵活、强大的字符串匹配方式。在Python中,我们可以通过re模块来使用正则表达式进行字符串匹配。

一、基本匹配规则

在Python中,使用正则表达式进行字符串匹配时,常用的匹配规则包括:

  • .: 匹配任意一个字符(除换行符外)
  • ^: 匹配字符串的开头
  • $: 匹配字符串的结尾
  • *: 匹配前面的字符零次或多次
  • +: 匹配前面的字符一次或多次
  • ?: 匹配前面的字符零次或一次
  • []: 匹配中括号中的任意一个字符
  • |: 匹配左右两边的任意一个表达式
  • {n}: 匹配前面的字符恰好n次
  • {m,n}: 匹配前面的字符至少m次,至多n次

下面我们通过一些示例来演示这些基本的匹配规则:

import re

# 匹配任意一个字符
pattern1 = r'.at'
text = 'cat, bat, mat'
result1 = re.findall(pattern1, text)
print(result1)  # ['cat', 'bat', 'mat']

# 匹配字符串的开头
pattern2 = r'^cat'
result2 = re.findall(pattern2, text)
print(result2)  # ['cat']

# 匹配字符串的结尾
pattern3 = r'mat$'
result3 = re.findall(pattern3, text)
print(result3)  # ['mat']

# 匹配前面的字符零次或多次
pattern4 = r'ca*t'
result4 = re.findall(pattern4, text)
print(result4)  # ['cat']

# 匹配前面的字符一次或多次
pattern5 = r'ca+t'
result5 = re.findall(pattern5, text)
print(result5)  # ['cat']

# 匹配前面的字符零次或一次
pattern6 = r'ca?t'
result6 = re.findall(pattern6, text)
print(result6)  # ['cat']

# 匹配中括号中的任意一个字符
pattern7 = r'[cb]at'
result7 = re.findall(pattern7, text)
print(result7)  # ['cat', 'bat']

# 匹配左右两边的任意一个表达式
pattern8 = r'ca|at'
result8 = re.findall(pattern8, text)
print(result8)  # ['ca', 'at']

# 匹配前面的字符恰好n次
pattern9 = r'ca{2}t'
result9 = re.findall(pattern9, text)
print(result9)  # []

# 匹配前面的字符至少m次,至多n次
pattern10 = r'ca{1,2}t'
result10 = re.findall(pattern10, text)
print(result10)  # ['cat']

二、常用正则表达式方法

在Python的re模块中,常用的正则表达式方法包括:

  • re.match(): 从字符串的开头开始匹配
  • re.search(): 在字符串中搜索匹配
  • re.findall(): 找到匹配的所有子串并返回一个列表
  • re.sub(): 替换字符串中的匹配项

下面我们通过示例来演示这些常用的正则表达式方法:

import re

text = 'cat, bat, mat'

# re.match()
pattern1 = r'cat'
result1 = re.match(pattern1, text)
print(result1)  # <re.Match object; span=(0, 3), match='cat'>

# re.search()
pattern2 = r'bat'
result2 = re.search(pattern2, text)
print(result2)  # <re.Match object; span=(5, 8), match='bat'>

# re.findall()
pattern3 = r'[c|b]at'
result3 = re.findall(pattern3, text)
print(result3)  # ['cat', 'bat']

# re.sub()
pattern4 = r'cat'
replace_text = re.sub(pattern4, 'dog', text)
print(replace_text)  # dog, bat, mat

三、常用的正则表达式

在实际工作中,有一些常用的正则表达式可以帮助我们快速匹配目标字符串,例如:

  • 匹配邮箱地址:\w+@\w+\.\w+
  • 匹配手机号码:1[0-9]{10}
  • 匹配IP地址:(\d{1,3}\.){3}\d{1,3}
  • 匹配URL地址:(https?|ftp|file)://\w+\.\w+

下面我们通过示例来演示这些常用的正则表达式:

import re

# 匹配邮箱地址
email_text = 'my email is abc@example.com'
pattern1 = r'\w+@\w+\.\w+'
result1 = re.findall(pattern1, email_text)
print(result1)  # ['abc@example.com']

# 匹配手机号码
phone_text = 'my phone number is 18912345678'
pattern2 = r'1[0-9]{10}'
result2 = re.findall(pattern2, phone_text)
print(result2)  # ['18912345678']

# 匹配IP地址
ip_text = 'my ip is 192.168.1.1'
pattern3 = r'(\d{1,3}\.){3}\d{1,3}'
result3 = re.findall(pattern3, ip_text)
print(result3)  # ['192.168.1.1']

# 匹配URL地址
url_text = 'my website is http://www.example.com'
pattern4 = r'(https?|ftp|file)://\w+\.\w+'
result4 = re.findall(pattern4, url_text)
print(result4)  # ['http://www.example.com']

通过以上示例,我们可以看到使用Python进行正则表达式匹配非常简单,只需要掌握一些基本的匹配规则和常用的方法,就可以很轻松地处理字符串匹配的问题。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程