You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式替换包含指定子串的完整字符串

问题描述

我有如下字符串:

str = '''

echo hello

THis works just fine . I love it 
![](/media/k-products/bf57d173-c1d7-44c4-b1fe-400c5f7e4e8c/35b17c4b-7f41-4552-8f9b-e883ccdc2c00.png)


| Column 1 | Column 2 | Column 3 |
| -------- | -------- | -------- |
| Text     | Text      | ![](/media/k-products/bf57d173-c1d7-44c4-b1fe-400c5f7e4e8c/35b17c4b-7f41-4552-8f9b-e883ccdc2c00.png)    |
ss

Hello world!

living on love
'''

给定子串:35b17c4b-7f41-4552-8f9b-e883ccdc2c00,我需要移除所有包含该子串的完整行。当前尝试的正则表达式无法实现需求:

print(re.sub(r'\b(35b17c4b-7f41-4552-8f9b-e883ccdc2c00\w*)', ' ', str)) 

正确实现方案

要移除包含指定子串的整行,需匹配整行内容(含换行符),而非仅替换子串。以下是可行代码:

import re

target_substring = '35b17c4b-7f41-4552-8f9b-e883ccdc2c00'
# 构建匹配整行的正则,转义特殊字符避免解析错误
pattern = re.compile(r'^.*{}.*$\n?'.format(re.escape(target_substring)), re.MULTILINE)
result = pattern.sub('', str)
print(result)

代码说明

  1. re.escape():转义目标子串中的-等正则特殊字符,防止正则语法错误。
  2. 正则模式^.*{}.*$\n?:
    • ^和$:配合re.MULTILINE标志,匹配每一行的开头和结尾
    • .*:匹配行内任意字符(除换行)
    • \n?:可选匹配换行符,避免移除行后残留空行
  3. re.MULTILINE:让正则以行为单位匹配,而非整个字符串的首尾。

运行结果

执行后得到的结果:

echo hello

THis works just fine . I love it 



| Column 1 | Column 2 | Column 3 |
| -------- | -------- | -------- |
ss

Hello world!

living on love

内容的提问来源于stack exchange,提问作者Kjobber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 22:30:29