この質問は古く、特に明確ではありません。正規表現をどのように使用しようとしたかを説明していません。とにかく答えようとします。
$1
まず、Perlや$2
Ruby のような「特別な」変数はありません。それが邪魔にならないので、さまざまな手順をどのように使用するかという簡単な問題になります。
たとえば、 を使用するとstring-match
、一致のリストを受け取るだけです。
#;1> (use regex regex-literals)
#;2> (string-match #/b(a)(r)/ "bar")
("bar" "a" "r")
したがって、使用する N 番目のサブマッチを参照するには(list-ref the-match N)
(0 は完全に一致した文字列に等しい)。
string-substitute
正規表現内で逆参照を使用する場合は、次のようにします("\\1"
文字列コンテキストでバックスラッシュをエスケープするには、2 つのバックスラッシュを使用する必要があります)。
#;1> (use regex regex-literal)
#;2> (string-substitute #/f(o)(\1)/ "lala\\2xyz" "foo")
"lalaoxyz"
これは一般的に機能しますが、置換でエスケープ シーケンスの前にバックスラッシュを使用するとエスケープされるという、文書化されていない機能 (またはおそらくバグ) があります。それがどのように機能するか、および正規表現の卵の代わりに irregex を使用してこれを回避する方法については、このバグレポートを参照してください。