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
相关产品推荐
相关产品推荐

