0

持ってる

(use extras format posix posix-extras regex regex-literals utils srfi-1)

論理グループ 1 と 2 を持つ正規表現を持っている

/^(\\W+)\\s+(\\W+)/

しかし、実際に -use- 1 と 2 を使用する構文に問題があります。$1 $2 、または \1 と \2 、または何か他のものを使用する必要がありますか? 正規表現自体と同じ LOC で 1 と 2 を使用します。

前もって感謝します、

まだまだ勉強中のスティーブ

4

1 に答える 1

0

この質問は古く、特に明確ではありません。正規表現をどのように使用しようとしたかを説明していません。とにかく答えようとします。

$1まず、Perlや$2Ruby のような「特別な」変数はありません。それが邪魔にならないので、さまざまな手順をどのように使用するかという簡単な問題になります。

たとえば、 を使用すると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 を使用してこれを回避する方法については、このバグレポートを参照してください

于 2015-09-14T14:15:33.323 に答える