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

如何用Python re.sub正则表达式批量插入换行至指定文本前

批量处理含PROB TEMPO和TEMPO文本的格式问题

需求说明

我有一段包含大量PROB TEMPO和TEMPO的文本,需要完成两个格式调整:

  • 针对PROB TEMPO,在PROB与TEMPO之间插入换行和缩进标记(</br>&emsp;)
  • 针对前面未出现PROB的独立TEMPO,在TEMPO前插入同样的换行和缩进标记

之前只能逐个匹配具体前缀(比如BKN009 TEMPO),尝试用正则批量处理但失败,比如以下代码未生效:

new_text = re.sub("BKN0\d\d", "BKN0\d\d </br>&emsp;TEMPO", text)

解决方案

可以通过两次正则替换实现批量处理,无需逐个匹配具体前缀:

1. 处理PROB TEMPO组合

直接匹配该固定组合,替换为带格式的版本:

import re

text = "PROB TEMPO BKN001 TEMPO BKN009 PROB TEMPO BKN008 TEMPO BKN012..."
# 替换PROB TEMPO为带换行缩进的格式
new_text = re.sub(r"PROB TEMPO", r"PROB </br>&emsp;TEMPO", text)

2. 处理独立的TEMPO

使用负向前瞻断言匹配前面不是PROB 的TEMPO,然后插入格式标记:

# 匹配前面无PROB的TEMPO,添加格式
new_text = re.sub(r"(?<!PROB )TEMPO", r"</br>&emsp;TEMPO", new_text)

最终结果

处理后的文本会变成:

PROB </br>&emsp;TEMPO BKN001 </br>&emsp;TEMPO BKN009 PROB </br>&emsp;TEMPO BKN008 </br>&emsp;TEMPO BKN012...

正则说明

  • (?<!PROB )是负向前瞻断言,确保匹配TEMPO时,其前面不是PROB (保留空格避免误匹配类似PROBTEMPO的异常情况)
  • 先处理PROB TEMPO组合,可避免第二步重复匹配已处理过的TEMPO,保证逻辑正确性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 01:04:54