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

问题描述 投票:0回答:1

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. 在正方形括号内的版本之间混合;,会导致意想不到的结果。

从技术上讲,一切都表现得如预期。

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

特别:

  • 这只是方便的语法吗?
  • 我是否缺少一些惯例,其中实施选择比掷硬币更重要?
  • 这两个版本之间是否有任何功能差异?
regex syntax jq
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.