Python 正则提取

1. 引言
正则表达式是一个强大的工具,用于在文本中进行模式匹配和提取特定信息。在Python中,有一个内置的re模块,可以用于操作正则表达式。
本文将详细介绍Python中正则表达式的用法,并提供一些示例代码和运行结果,以帮助读者更好地理解和使用正则表达式提取信息的方法。
2. 正则表达式基础
正则表达式(Regular Expression)是一个字符序列,可以用来匹配和操作字符串。
Python中正则表达式的基本操作包括:
- 匹配:使用re.match()或re.search()函数匹配字符串。
- 替换:使用re.sub()函数替换匹配到的字符串。
- 拆分:使用re.split()函数按照匹配的模式拆分字符串。
以下是Python中一些常用的正则表达式元字符及其含义:
.: 匹配任意单个字符,除了换行符。*: 匹配前一个字符0次或多次。+: 匹配前一个字符1次或多次。?: 匹配前一个字符0次或1次。[]: 匹配括号内的任意字符。^: 匹配字符串的开头。$: 匹配字符串的结尾。|: 匹配两个或多个正则表达式。
3. 正则表达式示例
3.1 匹配手机号码
import re
def extract_phone_numbers(text):
pattern = r"\d{11}" # 匹配11位数字
phone_numbers = re.findall(pattern, text)
return phone_numbers
text = "我的手机号码是13888888888,你的是13999999999。"
phone_numbers = extract_phone_numbers(text)
print(phone_numbers)
运行结果:
['13888888888', '13999999999']
3.2 匹配邮箱地址
import re
def extract_email_addresses(text):
pattern = r"\w+@\w+\.\w+" # 匹配邮箱地址
email_addresses = re.findall(pattern, text)
return email_addresses
text = "我的邮箱是abc@example.com,你的是def@example.com。"
email_addresses = extract_email_addresses(text)
print(email_addresses)
运行结果:
['abc@example.com', 'def@example.com']
3.3 替换敏感词
import re
def replace_sensitive_words(text):
sensitive_words = ["敏感词1", "敏感词2"]
for word in sensitive_words:
pattern = r"\b" + word + r"\b" # 匹配整个单词
text = re.sub(pattern, "***", text)
return text
text = "这句话包含了敏感词1和敏感词2。"
processed_text = replace_sensitive_words(text)
print(processed_text)
运行结果:
这句话包含了***和***。
3.4 拆分字符串
import re
def split_string(text):
pattern = r"[^\w]" # 拆分非单词字符
words = re.split(pattern, text)
return words
text = "Hello,World!"
words = split_string(text)
print(words)
运行结果:
['Hello', 'World', '']
通过以上示例,可以看到Python正则表达式的强大之处。使用正则表达式,可以方便地提取手机号码、邮箱地址,替换敏感词,以及拆分字符串等操作。
4. 总结
本文介绍了Python中正则表达式的基础知识和常见操作。通过使用re模块提供的函数,我们可以轻松地在文本中提取特定信息。
极客教程