📅  最后修改于: 2023-12-03 15:23:31.319000             🧑  作者: Mango
Python 提供了 re
模块来支持正则表达式的使用。正则表达式可用于寻找和替换文本中的子词。
使用 re.search()
方法可以寻找任意位置包含指定子词的字符串:
import re
text = "hello world, python is awesome, regex is cool"
search_pattern = "python|regex"
result = re.search(search_pattern, text)
if result:
print(f"Found '{result.group()}' in '{text}'")
else:
print(f"No match found")
执行结果:
Found 'python' in 'hello world, python is awesome, regex is cool'
可以看到,我们的搜索模式 python|regex
同时包含了子词 python
和 regex
,由于 search()
方法会从任意位置开始搜索,因此我们找到了第一个匹配项。
使用 re.sub()
方法可以对任意位置包含指定子词的字符串进行替换。
import re
text = "hello world, python is awesome, regex is cool"
search_pattern = "python|regex"
replace_pattern = "programming"
new_text = re.sub(search_pattern, replace_pattern, text)
print(f"Original text: '{text}'")
print(f"New text: '{new_text}'")
执行结果:
Original text: 'hello world, python is awesome, regex is cool'
New text: 'hello world, programming is awesome, programming is cool'
我们用 sub()
方法将 python
和 regex
替换成了 programming
。
假设我们要找出文章中包含“Python”和“RegEx”的句子,并将“Python”替换为“Python 3.8”,将“RegEx”替换为“正则表达式”。
import re
text = "Python is a powerful programming language. RegEx is awesome."
search_pattern = r"(.*Python.*|.*RegEx.*)"
result = re.findall(search_pattern, text)
for sentence in result:
new_sentence = re.sub(r"Python", "Python 3.8", sentence)
new_sentence = re.sub(r"RegEx", "正则表达式", new_sentence)
print(new_sentence)
执行结果:
Python 3.8 is a powerful programming language.
正则表达式 is awesome.
我们首先用 findall()
方法找到我们感兴趣的句子,然后分别用 sub()
方法将 Python
替换为 Python 3.8
,将 RegEx
替换为 正则表达式
,最终输出结果。
在 Python 中使用正则表达式可以轻松地查找和替换子词。使用 re.search()
方法可以寻找包含指定子词的字符串,使用 re.sub()
方法可以对包含指定子词的字符串进行替换。为了让搜索更精确,我们可以使用正则表达式中的特殊字符来限定匹配范围。