2016-09-09 3 views
0

ある場合のは、私はこのような項目のリストを持っているとしましょう:JQテストは、いくつかのサブストリングのいずれかの文字列で

[ 
    "abcdef", 
    "defghi", 
    "euskdh" 
] 

は、私が「A」を含むアイテムのすべてを返すフィルタを書きたいです、 "d"、または "h"のいずれかです。これは私が思いつくことができる最高です:

. as $val | select(any(["a", "d", "h"]; inside($val))) 

変数を使用せずに行う方法はありますか?あなたJQを想定し

答えて

2

は、正規表現をサポートしています

map(select(test("a|d|h"))) 

それとも、値のストリームたい場合:あなたJQは、それがどんな/ 2を持って、その後場合は、正規表現をサポートしていない場合は

.[] | select(test("a|d|h")) 

を次の値は、値のストリームを生成します:

.[] | select(any(index("a", "d", "h"); . != null)) 

他のすべてが失敗すると、次のことはジョブを実行しますが、非効率的ですient:ここ

.[] | select([index("a", "d", "h")] | any) 
0

インデックス

.[] 
| if index("a") or index("d") or index("h") then . else empty end 
を使用したソリューションであります
関連する問題