# カスタム パターン リファレンス

secret scanning に対して正確なカスタムパターンを定義するために、特定の正規表現の構文を使用します。

## カスタム パターンの正規表現ライブラリ

Secret scanning カスタム パターンは [Hyperscan ライブラリ](https://github.com/intel/hyperscan)を使用するように定義され、PCRE 構文のサブセットである Hyperscan の正規コンストラクトのみをサポートします。 Hyperscanのオプション修飾子はサポートされません。 Hyperscan パターン コンストラクトの詳細については、Hyperscan ドキュメントの「[パターンのサポート](https://intel.github.io/hyperscan/dev-reference/compilation.html#pattern-support)」を参照してください。

## カスタム パターンを手動で定義するための構文

UI の **[More options] <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-chevron-down" aria-label="chevron-down" role="img"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg>** セクションは、正規表現を手入力で記述するのに役立ちます。

* **シークレット形式:** シークレット自体の形式を記述する式。
* **シークレットの前:**  シークレットの前にある文字を記述する式。 既定では、これは `\A|[^0-9A-Za-z]` に設定されます。これは、シークレットが行の先頭にあるか、前に英数字以外の文字を付ける必要があることを意味します。
* **シークレットの後:** シークレットの後に来る文字を記述する式。 既定では、これは `\z|[^0-9A-Za-z]` に設定されます。これは、シークレットの後に新しい行または英数字以外の文字が続く必要があることを意味します。
* **追加の一致要件:** シークレット自体が一致しなければならない、または一致してはならない 1 つまたは複数の省略可能な式。

単純なトークンの場合、通常はシークレット形式のみを指定する必要があります。 他のフィールドでは柔軟性が提供されるため、複雑な正規表現を作成せずに、より複雑なシークレットを指定できます。

### カスタム パターンの例

ある会社には、5 つの特性を持つ内部トークンがあります。 さまざまなフィールドを使用して、トークンを特定する方法を次のように指定します。

| **特性** | 
**フィールドと正規表現** |
|----------------|------------------------------|
| 5 から 10 文字の長さ | シークレット形式: `[$#%@AA-Za-z0-9]{5,10}` |
| `.` で終わらない | シークレットの後: `[^\.]` |
| 数字と大文字を含む | 追加の要件: シークレットは `[A-Z]` および `[0-9]` と一致する必要がある |
| 1 行に複数の小文字を含まない | 追加の要件: シークレットは `[a-z]{2,}` と一致してはならない |
| `$%@!` のいずれかを含む | 追加の要件: シークレットは `[$%@!]` と一致する必要がある |

これらのトークンは、上記のカスタム パターンと一致します。

```shell
a9@AAfT!         # Secret string match: a9@AAfT
ee95GG@ZA942@aa  # Secret string match: @ZA942@a
a9@AA!ee9        # Secret string match: a9@AA
```

これらの文字列は、上記のカスタム パターンと一致しません。

```shell
a9@AA.!
a@AAAAA
aa9@AA!ee9
aAAAe9
```

## Limits

Secret scanning では、Organization または Enterprise アカウントごとに最大 500 個のカスタム パターン、およびリポジトリごとに最大 100 個のカスタム パターンがサポートされます。