📌  相关文章
📜  在单词 python regex 中查找和替换子词 - Python (1)

📅  最后修改于: 2023-12-03 15:23:31.319000             🧑  作者: Mango

在单词 python regex 中查找和替换子词 - Python

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 同时包含了子词 pythonregex,由于 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() 方法将 pythonregex 替换成了 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() 方法可以对包含指定子词的字符串进行替换。为了让搜索更精确,我们可以使用正则表达式中的特殊字符来限定匹配范围。