# Packages
syntaxパッケージは正規表現を解析木に解析し、解析木をプログラムにコンパイルします。通常、正規表現のクライアントはこのパッケージではなく、[regexp] パッケージ([regexp.Compile] や [regexp.Match] など)の機能を使用します。
# 構文
[Perl] フラグを使用して解析する場合、このパッケージが理解する正規表現の構文は次のとおりです。[Parse] に代替フラグを渡すことで、構文の一部を無効にすることもできます。
単一の文字:
.
# Functions
Compileは正規表現をパースし、成功した場合には、 テキストと照合するために使用できる [Regexp] オブジェクトを返します。
テキストと照合する際、正規表現は入力のなるべく早い位置(最も左端)から一致し、 その中からバックトラック検索が最初に見つけたものを選択します。 これを左端優先マッチングと呼びますが、 これはPerl、Pythonなどの実装と同じセマンティクスです。 ただし、このパッケージはバックトラックのコストなしで実装されています。 POSIXの左端最長一致マッチングについては、 [CompilePOSIX] を参照してください。.
CompilePOSIXは [Compile] と同様ですが、正規表現をPOSIX ERE(egrep)構文に制限し、マッチのセマンティクスをleftmost-longestに変更します。 つまり、テキストに対してマッチングする際に、正規表現は入力(最も左側)で可能な限り早く開始するマッチを返し、その中でも可能な限り長いマッチを選択します。 このleftmost-longestマッチングと呼ばれる手法は、かつての正規表現の実装やPOSIXが指定するセマンティクスと同じです。 ただし、複数のleftmost-longestマッチが存在する場合、このパッケージはPOSIXとは異なる方法を採用します。 可能なleftmost-longestマッチの中から、このパッケージはバックトラッキング検索で最初に見つかるマッチを選択します。一方、POSIXでは最初のサブエクスプレッション、次に2番目のサブエクスプレッション、以降左から右へと長さを最大化するマッチを選択すると規定されています。 POSIXのルールは計算上の制約があり、定義もされていません。 詳細については、https://swtch.com/~rsc/regexp/regexp2.html#posixを参照してください。.
Matchは、バイトスライス b が正規表現パターンのいずれかに一致するかどうかを報告します。 より複雑なクエリには、 [Compile] と完全な [Regexp] インターフェースを使用する必要があります。.
MatchReaderは、[io.RuneReader] によって返されるテキストに正規表現パターンの一致があるかどうかを報告します。 より複雑なクエリには [Compile] と完全な [Regexp] インターフェイスを使用する必要があります。.
MatchStringは、文字列sが正規表現パターンに一致するものを含んでいるかどうかを報告します。 より複雑なクエリを行う場合は、 [Compile] と完全な [Regexp] インターフェースを使用する必要があります。.
MustCompileは [Compile] と似ていますが、式を解析できない場合はパニックします。 これにより、コンパイルされた正規表現を保持するグローバル変数の安全な初期化が簡素化されます。.
MustCompilePOSIXは、 [CompilePOSIX] と似ていますが、式が解析できない場合にはpanicを発生させます。 これにより、コンパイルされた正規表現を保持するグローバル変数の安全な初期化を簡素化します。.
QuoteMetaは、引数のテキスト内のすべての正規表現メタ文字をエスケープした文字列を返します。返された文字列は、リテラルテキストにマッチする正規表現です。.