21

私が使用する場合

.gsub(/matchthisregex/,"replace_with_this")

gsub は正規表現と一致するものをどこかに保存しますか? 置換文字列で一致するものを使用したいと思います。たとえば、次のようなもの

"replace_with_" + matchedregexstring + "this"

上記の例では、一致した正規表現文字列が gsub から保存された一致になりますか? 紛らわしかったら申し訳ありません。

4

3 に答える 3

36

細かいマニュアルから:

replacementが の場合String、一致したテキストに置き換えられます。形式のパターンのキャプチャ グループへの後方参照が含まれる場合があります\dここで、dはグループ番号、または\k<n>nはグループ名です。二重引用符で囲まれた文字列の場合、両方の後方参照の前にバックスラッシュを追加する必要があります。ただし、置換内では、 などの特別な一致変数は現在の一致を参照しません。 [...] ブロック形式では、現在の一致文字列がパラメーターとして渡され、 、、 $` 、、および&$

$1$2$&$'適切に設定されます。ブロックによって返された値は、各呼び出しの一致に置き換えられます。

(expr)キャプチャ グループ (つまり、正規表現のようなもの) を気にしない場合は、ブロック フォームと を使用でき$&ます。

>> 'where is pancakes house?'.gsub(/is/) { "-#{$&}-" }
=> "where -is- pancakes house?"

キャプチャ グループがある場合\nは、置換文字列で使用できます。

>> 'where is pancakes house?'.gsub(/(is)/, '-\1-')
=> "where -is- pancakes house?"

または$nブロック内:

>> 'where is pancakes house?'.gsub(/(is)/) { "-#{$1}-" }
=> "where -is- pancakes house?"
于 2013-04-05T01:42:19.607 に答える