私はこれを読んでいて、それを理解していませんでした。2 つの質問があります。
([aeiou])
との違いは何[aeiou]
ですか?
とは<\1>
どういう意味ですか?
"hello".sub(/([aeiou])/, '<\1>') #=> "h<e>llo"
ここに文書化されています:
replacement が String の場合、一致したテキストに置き換えられます。形式のパターンのキャプチャ グループへの後方参照
"\d"
が含まれる場合があります。ここで、d
はグループ番号、またははグループ名です。二重引用符で囲まれた文字列の場合、両方の後方参照の前にバックスラッシュを追加する必要があります。ただし、置換内では、 などの特別な一致変数は現在の一致を参照しません。"\k<n>"
n
&$
文字クラスは角括弧 ([, ]) で区切られ、一致のその時点で出現する可能性のある文字がリストされます。/[ab]/ は a または b を意味し、/ab/ は a の後に b が続くことを意味します。
上記の定義が何で[aeiou]
あるかを明確にしたことを願っています。
括弧はキャプチャに使用できます。n番目の括弧で囲まれたテキストは、その後 n で参照できます。パターン内では後方参照を使用します \n; パターンの外側では MatchData[n] を使用します。
上記の定義が何で([aeiou])
あるかを明確にしたことを願っています。
([aeiou])
[..]
-文字列から最初に検出される文字クラス内の任意の文字は、 (つまり、最初のキャプチャ グループ)"hello"
の値です。\1
この例の値は で\1
あり、 (定義したように)e
に置き換えられます。これが、メソッドを使用して文字列から生成された方法です。<e>
<\1>
"h<e>llo"
hello
String#sub
あなたが投稿したドキュメントは言う
これには、「\d」(d はグループ番号) または「\k」(n はグループ名) の形式のパターンのキャプチャ グループへの後方参照が含まれる場合があります。
したがって、最初のグループで\1
キャプチャされたもの、つまり次のいずれかに一致し、それを置換で使用します()
[aeiou]
<\1>