関数 match-data と set-match-data は、マッチデータ全体を一括して読み書きします。
この関数は、直前の検索で一致したテキストに関するすべての情報を記録する位置(マーカーまたは整数)のリストを返します。0番目の要素は式全体の一致開始位置、1番目の要素は式の一致終了位置です。続く2つの要素は最初の部分式の一致開始位置と終了位置であり、以降も同様です。一般に、要素番号
2n は (match-beginning n) に、要素番号 2n + 1 は (match-end n) に対応します。
通常、すべての要素はマーカーまたはnilですが、integersがnilでない場合は、マーカーの代わりに整数を使用することになります。(この場合、マッチデータの完全な復元を容易にするため、バッファ自体がリストの末尾に追加要素として付加されます。)直前のマッチがstring-matchを持つ文字列に対して行われた場合は、マーカーで文字列を指すことはできないため、常に整数が使用されます。
reuse が nil
でない場合、それはリストである必要があります。その場合、match-data はマッチデータを
reuse に格納します。つまり、reuse
は破壊的に変更されます。reuse
は適切な長さである必要はありません。マッチデータを格納するのに十分な長さでない場合は、拡張されます。長すぎる場合は、reuse の長さはそのままで、使用されなかった要素は nil
に設定されます。この機能の目的は、ガベージコレクションの必要性を減らすことです。
reseat が nil でない場合、reuse リスト上のすべてのマーカーは、どこにも指さないよう再配置される。
従来通り、検索関数の呼び出しと、その検索のマッチデータにアクセスするためのmatch-dataの呼び出しとの間に、介在する検索が行われる可能性があってはならない。
(match-data)
⇒ (#<marker at 9 in foo>
#<marker at 17 in foo>
#<marker at 13 in foo>
#<marker at 17 in foo>)
This function sets the match data from the elements of match-list, which should be a list that was the value of a
previous call to match-data. (More precisely,
anything that has the same format will work.)
match-list が存在しないバッファを参照している場合、エラーは発生しません。その代わり、マッチデータが無意味ながらも無害な形で設定されます。
reseat が nil でない場合、match-list リスト上のすべてのマーカーは、どこにも指さないよう再配置される。
store-match-data は set-match-data の半廃れたエイリアスです。