python中re库的使用

re库是Python中用于正则表达式操作的标准库,它提供了一系列函数和语法,用于匹配、搜索、替换字符串中的模式。以下是re库的使用详解:

  1. re.match()

re.match()函数用于从字符串的开头匹配模式,并返回匹配对象。

import re

text = "Hello, world!"
pattern = r"Hello"

match = re.match(pattern, text)
if match:
    print("Match found:", match.group())
else:
    print("Match not found")

说明:

  • r"Hello"是正则表达式模式,表示匹配文本中的"Hello"
  • re.match()函数将从字符串的开头开始匹配模式,如果匹配成功,将返回一个匹配对象,否则返回None
  • match.group()方法将返回匹配的字符串
  1. re.search()

re.search()函数用于在字符串中搜索模式,并返回第一个匹配对象。

text = "Hello, world!"
pattern = r"world"

match = re.search(pattern, text)
if match:
    print("Match found:", match.group())
else:
    print("Match not found")

说明:

  • r"world"是正则表达式模式,表示搜索文本中的"world"
  • re.search()函数将在字符串中搜索模式,如果匹配成功,将返回第一个匹配对象,否则返回None
  • match.group()方法将返回匹配的字符串
  1. re.findall()

re.findall()函数用于在字符串中搜索模式,并返回所有匹配的字符串列表。

text = "Hello, world!"
pattern = r"l"

matches = re.findall(pattern, text)
print(matches)

说明:

  • r"l"是正则表达式模式,表示搜索文本中的"l"
  • re.findall()函数将在字符串中搜索模式,返回所有匹配的字符串列表
  1. re.sub()

re.sub()函数用于替换字符串中的模式。

text = "Hello, world!"
pattern = r"world"

new_text = re.sub(pattern, "Python", text)
print(new_text)

说明:

  • r"world"是正则表达式模式,表示搜索文本中的"world"
  • re.sub()函数将在字符串中搜索模式,并将其替换为指定的字符串
  1. 正则表达式语法

正则表达式语法非常丰富,以下是一些常用的语法:

  • .:匹配任意字符
  • []:匹配括号中的任意字符
  • ^:匹配字符串开头
  • $:匹配字符串结尾
  • *:匹配前一个字符0次或多次
  • +:匹配前一个字符1次或多次
  • ?:匹配前一个字符0次或1次
  • {m}:匹配前一个字符m次
  • {m,n}:匹配前一个字符m到n次
  • |:匹配左右两边的任意一个模式
  • ():用于分组匹配

例如,以下正则表达式将匹配以字母开头、后跟任意数量的字母和数字的字符串:

pattern = r"[a-zA-Z][a-zA-Z0-9]*"

以上是re库的基本使用介绍,re库还提供了很多其他的函数和语法,例如模式修饰符、贪婪匹配、非贪婪匹配等。您可以在Python的官方文档中了解更多信息。

以下是一些使用re库进行文本处理的案例:

  1. 邮箱地址匹配
import re

pattern = r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b"
text = "My email is john@example.com. Please contact me at john@example.com."

matches = re.findall(pattern, text)
for match in matches:
    print(match)

说明:

  • 正则表达式模式\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b用于匹配邮箱地址
  • re.findall()函数在文本中搜索所有匹配的邮箱地址,并返回一个列表
  • 遍历列表,并打印每个匹配的邮箱地址
  1. 手机号码匹配
import re

pattern = r"\d{3}-\d{3}-\d{4}"
text = "Please call me at 123-456-7890."

match = re.search(pattern, text)
if match:
    print(match.group())
else:
    print("No match found.")

说明:

  • 正则表达式模式\d{3}-\d{3}-\d{4}用于匹配美国电话号码格式
  • re.search()函数在文本中搜索第一个匹配的电话号码,并返回一个匹配对象
  • 如果匹配成功,打印匹配的电话号码,否则打印提示信息
  1. HTML标签匹配
import re

pattern = r"<.*?>"
text = "<html><head><title>Page Title</title></head><body><h1>This is a Heading</h1><p>This is a paragraph.</p></body></html>"

new_text = re.sub(pattern, "", text)
print(new_text)

说明:

  • 正则表达式模式<.*?>用于匹配HTML标签
  • re.sub()函数将文本中所有匹配的HTML标签替换为空字符串
  • 打印替换后的文本
  1. IP地址匹配
import re

pattern = r"\b(?:\d{1,3}\.){3}\d{1,3}\b"
text = "My IP address is 192.168.0.1"

match = re.search(pattern, text)
if match:
    print(match.group())
else:
    print("No match found.")

说明:

  • 正则表达式模式\b(?:\d{1,3}\.){3}\d{1,3}\b用于匹配IP地址
  • re.search()函数在文本中搜索第一个匹配的IP地址,并返回一个匹配对象
  • 如果匹配成功,打印匹配的IP地址,否则打印提示信息

以上是一些使用re库进行文本处理的案例,正则表达式的应用非常广泛,可以用于数据清洗、文本提取等多种场景。

发表评论

后才能评论