re库是Python中用于正则表达式操作的标准库,它提供了一系列函数和语法,用于匹配、搜索、替换字符串中的模式。以下是re库的使用详解:
- 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()
函数将从字符串的开头开始匹配模式,如果匹配成功,将返回一个匹配对象,否则返回Nonematch.group()
方法将返回匹配的字符串
- 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()
函数将在字符串中搜索模式,如果匹配成功,将返回第一个匹配对象,否则返回Nonematch.group()
方法将返回匹配的字符串
- re.findall()
re.findall()
函数用于在字符串中搜索模式,并返回所有匹配的字符串列表。
text = "Hello, world!"
pattern = r"l"
matches = re.findall(pattern, text)
print(matches)
说明:
r"l"
是正则表达式模式,表示搜索文本中的”l”re.findall()
函数将在字符串中搜索模式,返回所有匹配的字符串列表
- 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()
函数将在字符串中搜索模式,并将其替换为指定的字符串
- 正则表达式语法
正则表达式语法非常丰富,以下是一些常用的语法:
.
:匹配任意字符[]
:匹配括号中的任意字符^
:匹配字符串开头$
:匹配字符串结尾*
:匹配前一个字符0次或多次+
:匹配前一个字符1次或多次?
:匹配前一个字符0次或1次{m}
:匹配前一个字符m次{m,n}
:匹配前一个字符m到n次|
:匹配左右两边的任意一个模式()
:用于分组匹配
例如,以下正则表达式将匹配以字母开头、后跟任意数量的字母和数字的字符串:
pattern = r"[a-zA-Z][a-zA-Z0-9]*"
以上是re库的基本使用介绍,re库还提供了很多其他的函数和语法,例如模式修饰符、贪婪匹配、非贪婪匹配等。您可以在Python的官方文档中了解更多信息。
以下是一些使用re库进行文本处理的案例:
- 邮箱地址匹配
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()
函数在文本中搜索所有匹配的邮箱地址,并返回一个列表- 遍历列表,并打印每个匹配的邮箱地址
- 手机号码匹配
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()
函数在文本中搜索第一个匹配的电话号码,并返回一个匹配对象- 如果匹配成功,打印匹配的电话号码,否则打印提示信息
- 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标签替换为空字符串- 打印替换后的文本
- 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库进行文本处理的案例,正则表达式的应用非常广泛,可以用于数据清洗、文本提取等多种场景。
作者:admin 创建时间:2023-03-20 23:12
更新时间:2023-07-13 15:23
更新时间:2023-07-13 15:23