メインコンテンツにスキップ

regexall 関数

regexall は、正規表現を文字列に適用し、すべてのマッチのリストを返します。

コードブロック
regexall(pattern, string)

regexallregex のバリアントであり、同じパターン構文を使用します。regex への任意の入力に対して、regexallregex が返したであろう型と同じ型のリストを、マッチごとに 1 つの要素で返します。つまり、

  • パターンにキャプチャグループが全くない場合、結果は文字列のリストになります。
  • パターンに 1 つ以上の名前なしキャプチャグループがある場合、結果はリストのリストになります。
  • パターンに 1 つ以上の名前付きキャプチャグループがある場合、結果はマップのリストになります。

regexall は、結果として得られるマッチのリストの長さが 0 より大きいかどうかをテストすることで、特定の文字列が与えられたパターンに一致するかどうかをテストするためにも使用できます。

コードブロック
> regexall("[a-z]+", "1234abcd5678efgh9")
[
"abcd",
"efgh",
]

> length(regexall("[a-z]+", "1234abcd5678efgh9"))
2

> length(regexall("[a-z]+", "123456789")) > 0
false
  • regex は、与えられたパターンの単一のマッチを検索し、マッチが見つからない場合はエラーを返します。

OpenTofu に、マッチさせようとしている構文を解析するためのより特化した関数が既にある場合は、代わりにその関数を使用することを推奨します。正規表現は読みにくく、意図を不明瞭にする可能性があり、構成を読んだり理解したりするのが難しくなる可能性があります。