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

Notepad++正则表达式:将数字+ST字符串移至倒数第二个空格前

正则表达式实现思路

核心思路是利用捕获组拆分每行内容,重新调整目标字符串的位置,具体步骤如下:

1. 明确行结构

每行可拆分为4个关键部分:

  • 前缀内容:数字 ST 之前的所有字符
  • 目标字符串:格式为 \d+ ST(数字+空格+ST)
  • 中间过渡内容:数字 ST 之后到最后两个单词之前的字符
  • 结尾固定部分:每行最后的两个单词(含分隔空格)

2. 编写匹配正则

用捕获组把这4部分分别抓出来,正则表达式如下:

^(.*?)\b(\d+ ST)\b(.*?)(\s+\S+\s+\S+)$

各部分解释:

  • ^(.*?):非贪婪匹配行开头到数字 ST前的内容,避免过度匹配
  • \b(\d+ ST)\b:用单词边界\b确保精准匹配独立的数字 ST,并捕获为第2组
  • (.*?):非贪婪匹配数字 ST到最后两个单词前的过渡内容,捕获为第3组
  • (\s+\S+\s+\S+)$:匹配结尾的两个单词(含前面的分隔空格),捕获为第4组

3. 替换规则

将捕获的组按「前缀→过渡内容→目标字符串→结尾单词」的顺序拼接,替换表达式为:

$1$3$2$4

示例验证

拿你给出的第一行原内容举例:

  • 原行:xxx xxx xxxxxx 123 ST xxx xxx xxx
  • 捕获组1:xxx xxx xxxxxx
  • 捕获组2:123 ST
  • 捕获组3:xxx
  • 捕获组4:xxx xxx
  • 替换后结果:xxx xxx xxxxxx xxx 123 ST xxx xxx,完全符合期望

注意事项

  • 确保每行确实以两个单词结尾,否则正则可能不匹配
  • 如果你的文本中数字 ST前后没有明显单词边界(比如和其他符号相连),可以去掉\b,调整为(\d+ ST)
  • 不同工具(如VS Code、Notepad++、sed)的正则语法略有差异,比如sed需要转义捕获组符号为\1\3\2\4,但核心逻辑一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:45:44