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

如何让正则匹配带引号值的长命令选项?

解决命令行带引号选项的正则匹配问题

你的正则表达式无法匹配长选项的核心原因是:原表达式中\w仅能匹配单个字母、数字或下划线,而长选项(如--option、--long-option)包含多个字符,部分还带有连字符-,因此需要调整选项名称的匹配规则。

修改后的正则表达式

将原表达式中的\w替换为[\w-]+,允许匹配多个包含连字符的选项名称:

def pattern = ~/\s+[-]{1,2}[\w-]+\s+'.*'/ 

匹配验证

修改后所有断言均可通过:

  • assert "cmd -o '{}'" =~ pattern ✅
  • assert 'cmd -o \'{"a": "b"}\'' =~ pattern ✅
  • assert 'cmd --option \'{"a": "b"}\'' =~ pattern ✅
  • assert 'cmd --long-option \'{"a": "b"}\'' =~ pattern ✅

可选优化(更严谨匹配)

原表达式中的.*是贪婪匹配,若命令行存在多个单引号,可能会意外匹配到超出目标选项的内容。如果需要严格匹配单个带单引号的值,可以将'.*'替换为'[^']*',确保匹配到第一个闭合的单引号为止:

def pattern = ~/\s+[-]{1,2}[\w-]+\s+'[^']*'/ 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 14:42:35