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

如何用正则表达式拆分命令行参数并保留连字符?

解决方案

要正确拆分这种带空格参数和特殊标记的命令行,不能单纯靠正向断言,得用更精准的正则逻辑,核心是区分命令主体、短参数(-开头)、**长参数(--开头)**以及单独的终止标记--。

正则表达式思路

用以下正则进行匹配,直接捕获每个完整的参数块:

^.*?(?=\s-(?!-)|$)|--?\S+(?:\s(?!-|--)\S+)*|--$

逻辑拆解

  • ^.*?(?=\s-(?!-)|$):匹配开头的命令主体,直到遇到空格后接单个-(短参数)或者行尾
  • --?\S+(?:\s(?!-|--)\S+)*:匹配短参数(-xxx)或长参数(--xxx),并且包含后续跟着的非参数开头的内容(比如带空格的路径/值)
  • --$:单独匹配作为终止标记的--

匹配效果测试

把目标命令行代入,会直接得到你想要的拆分结果:

  • some\path to\an\executable.exe
  • -foo
  • --bar-baz abc\d e
  • --qux
  • -tux 123
  • --vux 456
  • --

注意事项

  • 如果参数里有引号包裹的内容(比如"path with space"),这个正则需要调整,但你当前的场景里没有这种情况,直接用就行
  • 这个正则已经考虑了长参数里的连字符(比如--bar-baz),不会错误拆分这类参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:45:17