ワークフローの.yml
には都度パターンが出現します。使える特殊な文字は以下のようなものがあります。
*
**
!
[
と]
?
+
*
*
はすべてにマッチしますが/
は跨ぎません。これは*
と設定した時foo
やbar
はマッチしますが、foo/foo
やbar/bar
にはマッチしません。
またあるワードの前後に適当な文字を付けると、適当な文字は必ず含まれるランダムな文字にマッチします。*-bar
やfoo-*
はfoo-bar
にマッチします。
**
**
はすべてにマッチします。こちらは/
にもマッチするのでfoo/foo
やbar/bar
にもマッチします。
こちらもランダムな文字と組み合わせて使えます。**/src/main.js
はpath/to/src/main.js
やa/b/c/src/main.js
などにマッチします。
また特によく使う表現は拡張子と使う方法です。**.js
や**.md
などはpath/to/foo.js
やpath/to/readme.md
など、適当なディレクトリにある.js
や.md
ファイルにマッチします。
!
!
は直前でマッチしたものの中から一部除外する為のパターンです。例えば**.js
はすべての.js
がマッチしますが。この後に続けて!foo/src/main.js
を置けば、foo/src/main.js
以外のすべてのリポジトリに含まれる.js
ファイルがマッチします。
[ と ]
[
と]
で囲んだ部分はある1文字についてのパターンを表現します。*
ではすべての文字がマッチしていましたが、この表現にするとその文字をある程度絞り込めます。例えば[abc]
であればa
かb
、c
のどれかになります。もうひとつ挙げると[0123456789]
は数値だけにマッチすることになります。
上記のような0123...
というのは続いた値です。このような場合は[0-9]
と-
を挟んで省略できます。これはアルファベットも同じで[a-z]
や[A-Z]
と書けます。
また、これらを[0-9a-zA-Z]
のように組み合わせることもできます。
?
直前の文字が「あっても無くても良い」ことを表現できます。*.jsx?
というパターンの場合*.js
と*.jsx
どちらにもマッチします。
+
直前の文字は必ず1つ以上続くことを表現できます。(無理やり感がありますが)[ademe]+.md
とすればreadme.md
やadem.md
などにマッチします。
他にこれをよく使うのはセマンティック・バージョニングのパターンなどです。このパターンはv[0-9].[0-9]+.[0-9]+
のように書きます。こえでv1.23.681
のような文字にマッチします。