

# CloudFormation テンプレートでの正規表現の使用
<a name="cfn-regexes"></a>

CloudFormation テンプレート内では、正規表現 (regex と呼ばれることもあります) をさまざまな場所で使用できます (例えば、テンプレート[パラメータ](parameters-section-structure.md)の作成時の `AllowedPattern` プロパティ)。

CloudFormation の正規表現はすべて、Java の正規表現構文に準拠しています。Java の正規表現構文とそのコンストラクトの包括的な説明については、「[java.util.regex.Pattern](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/regex/Pattern.html)」を参照してください。

CloudFormation テンプレートを JSON 構文で記述する場合は、追加のバックスラッシュを追加して、正規表現のバックスラッシュ文字 (\\) をエスケープする必要があります。これは、JSON がバックスラッシュをエスケープ文字として解釈するため、正規表現でリテラルバックスラッシュとして扱われるようにエスケープする必要があるためです。

たとえば、数字を示す `\d` を正規表現に含める場合、JSON テンプレートでは `\\d` と記述する必要があります。

次の例では、`AllowedPattern` プロパティは、4 つの連続した数字 (`\d{4}`) に一致する正規表現を指定します。ただし、正規表現は JSON テンプレートで定義されているため、バックスラッシュ文字は追加のバックスラッシュ (`\\d`) でエスケープする必要があります。

```
{
  "Parameters": {
    "MyParameter": {
      "Type": "String",
      "AllowedPattern": "\\d{4}"
    }
  }
}
```

CloudFormation テンプレートを YAML 構文で記述する場合は、正規表現を一重引用符 ('') で囲む必要があります。追加のエスケープは必要ありません。

```
Parameters:
  MyParameter:
    Type: String
    AllowedPattern: '\d{4}'
```

**注記**  
CloudFormation の正規表現は、`AllowedPattern` などの特定のコンテキストでの検証目的でのみサポートされます。これらは、パターンマッチングではなく正確な文字列比較のみを実行する `Fn::Equals` などの CloudFormation 組み込み関数のパターンマッチングオペレーションとしてはサポートされていません。