如果命令字符串包含引号作为其选项之一,我会try 进行匹配.以下是我到目前为止得到的信息:

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

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

有什么建议可以让多头期权发挥作用吗?

推荐答案

您可以使用此正则表达式来匹配问题中提供的所有情况:

\s+-{1,2}\w[\w-]*\s+'[^']*'

RegEx Demo

RegEx Details:

  • \s+:匹配1+空格
  • -{1,2}:匹配1个或2个连字符
  • \w[\w-]*:匹配1+个以单词字符开头的单词或连字符
  • \s+:匹配1+空格
  • '[^']*':匹配用单引号括起来的字符串

Java相关问答推荐

如何从片段请求数据到活动?在主要活动中单击按钮请求数据?

当耗时的代码完成时,Circular ProgressIndicator显示得太晚

Java 22模式匹配不适用于记录模式匹配.给出汇编问题

将linkedHashMap扩展到Java中的POJO类

在Java中将Charsequence数组更改为String数组或List String<>

为什么BasicComboBoxRenderer在文本不存在或文本为空的情况下设置两次文本?

Java记录的不同序列化/反序列化

Helidon 4和Http API

在执行流和相关操作时,使用Java泛型为2个方法执行相同的操作,但对象不同

如果按钮符合某些期望,如何修改它的文本?

在Frege中,我如何将一个字符串安全地转换为一个可能的Int?

基于配置switch 的@Controller的条件摄取

使用for循环时出现堆栈溢出错误,但如果使用if块执行相同的操作,则不会产生错误

如何在字节数组中反转UTF-8编码?

为什么项目名称出现在我的GET请求中?

如何使JOOQ渐变脚本不重新创建表未更改的类?

获取401未经授权,即使在标头中设置了浏览器名称和cookie

获取月份';s在java中非UTC时区的开始时间和结束时间

java构造函数中的冻结操作何时发生?

在不带instanceof或switch的java中记录模式