Python使用正则将星号后段落转换为Markdown高亮格式的实现问题
实现方案
核心思路是将原来的提取逻辑改为正则替换逻辑,保留原文所有未匹配内容,仅对匹配到的星号段落后的段落做高亮包裹,同时删除所有4个及以上连续星号的行。
完整代码
import re # 用with上下文管理器处理文件,自动完成后自动关闭,避免资源泄漏 with open('/Users/text.txt', mode='r', encoding='utf-8') as f: raw_text = f.read() processed_text = re.sub( # 匹配规则:匹配1行或多行全为4个及以上星号的连续行,后跟目标段落 r'^\*{4,}(?:\r?\n\*{4,})*\r?\n\s*([^\r\n]+)\s*', # 替换规则:删除所有星号行,将捕获到的目标段落用==包裹 lambda match: f'=={match.group(1).strip()}==\n', raw_text, flags=re.MULTILINE ) print(processed_text) # 如果需要保存处理后的内容到新文件可取消注释下面代码 # with open('/Users/output.md', mode='w', encoding='utf-8') as f: # f.write(processed_text)
效果说明
- 原文中所有未被星号标记的内容会完整保留,不会产生修改
- 所有连续的4个及以上星号的行都会被自动删除
- 星号行之后的第一个非空段落会自动被
==高亮标记包裹,同时自动清理段落前后的多余空白字符
内容的提问来源于stack exchange,提问作者Simon Ante
相关产品推荐
相关产品推荐

