# パターン マッチング

foo

## あらゆるpath要素へのマッチ

pathが3つに区切られている次のイベントを待ちたいとしましょう。

    sync "/*/*/*"

このパターンはちょうど3つの区分を持つpathならば, その区分の名前に関わらずどんなTime Stateイベントにもマッチします。 例えば:

- `cue "/foo/bar/baz"`
- `cue "/foo/baz/quux"`
- `cue "/eggs/beans/toast"`
- `cue "/moog/synths/rule"`

しかし、区分の数が少なかったり多かったりするpathにはマッチしません。 例えば以下のものにはマッチしないでしょう:

- `cue "/foo/bar"`
- `cue "/foo/baz/quux/quaax"`
- `cue "/eggs"`

それぞれの`*`は「あらゆるもの」を意味しています。 なので、区分が一つだけのpathには `/*` でマッチでき、5つの区分を持つpathには次のパターンでマッチできます: `/*/*/*/*/*`

## 部分的なパス要素へのマッチング

foo

- `cue "/foo/bar/baz"`
- foo
- foo

しかし、以下のものにはマッチしないでしょう：

- foo
- foo
- foo

foo

## ネストされたpath要素へのマッチ

foo

- `cue "/foo/bar/baz"`
- foo
- foo
- foo

## 一文字へのマッチング

1文字へのマッチングには `?` の文字を使うことができ、`"/?oo/bar/baz"` は次のようにマッチします:

- `cue "/foo/bar/baz"`
- `cue "/goo/bar/baz"`
- `cue "/too/bar/baz"`
- `cue "/woo/bar/baz"`

## 複数の文字へのマッチング

foo

- foo
- foo
- foo

## 複数の文字へのマッチング

foo

- foo
- foo
- foo

foo

- foo
- foo
- foo
- foo
- foo

## Combining Matchers

`sync`または`get`を呼び出している時には、マッチング規則を自由な順番に組み合わせて`cue`や`set`で生まれるどんなTime Stateイベントにもパワフルにマッチさせることができます。 すごい例を見てみましょう。

    sample :loop_amen

## OSC パターンマッチング

For those curious, these matching rules are based on the Open Sound Control pattern matching specification which is explained in detail here: https://opensoundcontrol.stanford.edu/spec-1_0.html