在选择实现时,jq提供的正则表达式模式是否有任何功能差异?

时间:2017-12-18 04:43:49

标签: regex syntax jq

jq中的以下两个表达式之间是否存在差异?

表达式1

match("prefix.*if you do";"gmi")

表达式2

match(["prefix.*if you do","gmi"])

首饰

  1. 他们都返回了预期的数据:

    {
       "caveats": "The command has been installed with the prefix \"g\".\nIf you do not want the prefix, install using the \"with-default-names\"\noption.\n"
    }
  2. 删除不区分大小写( i )标记或两个表达式上的多行标记( m )将导致比赛失败。

  3. 根据手册使用[regex,flags] regex;flags语法:

    The jq regex filters are defined so that they can be used using one of
    these patterns:
    
    STRING | FILTER( REGEX ) 
    STRING | FILTER( REGEX; FLAGS )
    STRING | FILTER( [REGEX] )
    STRING | FILTER( [REGEX, FLAGS] )
  4. 在方括号内的版本之间混合;,会导致意外结果。

  5. 从技术上讲,一切都表现得像预期的那样。

    但由于我的例子简单,这些结果是否具有间接性

    具体做法是:

    • 这只是方便的语法吗?
    • 在实施选择比掷硬币更重要的地方,我是否缺少一些惯例?
    • 两个版本之间是否有任何功能差异?

1 个答案:

答案 0 :(得分:0)

有一段时间jq不支持多个arity功能。我相信你描述的二元性是那些日子的遗产。任何差异都是值得报道的错误。

(也许有些人养成了输入[x,y]而不是x;y而更喜欢前者的习惯?