如何优化正则表达式与替换规则,清理Markdown中误输入的换行符
你当前使用的正则核心问题出在[^#]+的贪婪匹配规则,这部分会匹配换行后第一个非#字符开始的所有连续内容,直接替换为空会导致对应内容丢失,不符合只合并换行、保留文本的需求。
优化方案
第一步:合并误输入的换行
匹配正则:\s*\n+\s*(?!#)
替换值: (单个空格)
匹配逻辑:
- 匹配换行前后的所有空白字符+1个及以上连续换行
- 用正向否定预查
(?!#)保证换行后不是标题开头的#,不会误合并标题行 - 仅将匹配到的整段换行+空白替换为单个空格,保留原有文本内容
第二步(可选,对齐你给出的期望输出格式):清理标题行前的多余空白
匹配正则:^\s*(#+)\s*
替换值:$1 (如果需要#和后续内容之间保留空格就改为$1 )
作用:删除标题行开头#前的所有空白,统一标题格式。
按上述规则执行替换后,即可得到你预期的输出结果。
内容的提问来源于stack exchange,提问作者Vishwas
相关产品推荐
相关产品推荐

