简单例子实现 字符串搜索替换
很好,很高兴你理解了。现在我们用一个简单的例子来把正则表达式的搜索与替换串联起来。
假设你有以下一段文字:
我的电话号码是 138-1234-5678。
你的目标是:
- 搜索并找到电话号码。
- 替换电话号码,将中间的
-
替换成*
。
1. 搜索:re.search()
首先,我们需要创建一个模式来匹配这个电话号码的格式:数字-数字-数字
。
我们使用以下几个正则表达式元字符:
\d
:匹配任意一个数字 (0-9)。{n}
:匹配前面的内容重复n
次。所以\d{3}
表示匹配 3 个数字。-
:匹配字面量-
。
将这些组合起来,我们的模式就是 r"\d{3}-\d{4}-\d{4}"
。
import retext = "我的电话号码是 138-1234-5678。"
pattern = r"\d{3}-\d{4}-\d{4}"# 使用 re.search() 搜索第一个匹配
match = re.search(pattern, text)if match:# 如果找到匹配,match.group() 会返回匹配到的完整字符串phone_number = match.group()print(f"找到的电话号码是:{phone_number}")
else:print("没有找到电话号码。")
输出:
找到的电话号码是:138-1234-5678
2. 替换:re.sub()
现在,我们有了模式,就可以用 re.sub()
来进行替换了。re.sub()
的作用是用一个新字符串替换所有符合模式的旧字符串。
在这个例子中,我们想把电话号码替换成带有 *
的新格式。
import retext = "我的电话号码是 138-1234-5678。"
pattern = r"\d{3}-\d{4}-\d{4}"
replacement = "138*1234*5678" # 这是一个简单的替换字符串# 使用 re.sub() 进行替换
new_text = re.sub(pattern, replacement, text)print(f"原始文本:{text}")
print(f"替换后的文本:{new_text}")
输出:
原始文本:我的电话号码是 138-1234-5678。
替换后的文本:我的电话号码是 138*1234*5678。
通过这个例子,你可以看到正则表达式是如何用一个模式来同时完成查找和替换这两个工作的。它比简单的字符串查找功能要强大得多。
你对这个搜索和替换的例子还有疑问吗?