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

求助:使用正则表达式将含指定关键词的行移至列表顶部

求助:使用正则表达式将含指定关键词的行移至列表顶部

嘿,我来帮你搞定这个需求!要把包含blue的行移到列表最顶部,用正则配合常用的文本编辑器或命令行工具就能实现,我分两种实用场景给你说:

场景1:在VS Code/Sublime这类编辑器里操作

这类编辑器支持强大的正则查找替换,按下面的步骤来就行:

  • 打开要处理的文本,调出「查找替换」面板(VS Code是Ctrl+H)
  • 勾选面板上的「正则表达式」按钮(就是那个.*图标),再勾选「全局匹配」
  • 输入以下内容:
    • 查找内容:
      ((?:.*blue.*\n)+)|((?:(?!blue).*\n)+)
      
    • 替换内容:
      $1$2
      
    原理很简单:把所有含blue的行捕获到$1分组,不含的捕获到$2分组,替换后就自动把$1(也就是目标行)放到最前面了。

要是你的文本最后一行没有换行符,可以把查找内容微调成这个,适配性更强:

((?:.*blue.*\r?\n?)+)|((?:(?!blue).*\r?\n?)+)

场景2:用命令行工具(比如sed)批量处理文件

如果你需要批量处理本地文件,用sed命令一行就能搞定,直接在终端输入:

sed -e '/blue/!{H;d;}' -e '${x;s/^\n//;p;}' 你的文件名.txt

这个命令的逻辑超清晰:

  • 遇到不含blue的行,就先暂存到内存的「保留空间」,然后跳过当前行
  • 遇到含blue的行,直接输出到屏幕
  • 处理到文件末尾时,把暂存的非blue行取出来,去掉开头多余的换行后再输出

把你的测试文本放进去跑一遍,就能得到你想要的结果:

Michelle has a blue Audi S7 Sportback
Bradley has a blue Ford Edge
Paul has a red BMW i7
Tina has black Mercedes A-Class
Robert has a silver Volkswagen Golf
Carl has a white Tesla Model Y

备注:内容来源于stack exchange,提问作者Frank

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 13:50:27