私は、ポイントで文字列を見て、ダブルドル記号($$)、ダブルドル記号(inbetween($ 123 $)、シングルドル記号と_。私は非常に簡単に2つの正規表現のgsubでやったが、私は1つの正規表現でそれを行うことができるように、私はそれをロックダウンすることができない狂った私を運転するように感じる。おそらく時間やスピードには関係ありませんが、この時点で私はちょっと凝縮された方法があるかどうか、あるいは私が狂っているかどうかを知る必要があります。
gsub (/\$[0-9]*\$/, "_", $1);
gsub (/\$/, "_", $1);
は私が
gsub (/\$[0-9]*\$*/, "_", $1);
を使用して1行でそれを設定しても問題がなかったと思ったが、私は実現しなかったのインスタンスがありました。ここで
は、私が現在持っているものです1ドル記号は、数字ではなく、ドル記号を置き換えたいだけの数字($ 123)に従います。だから、私は数字が一致した場合は1ドル記号、次に0以上の数字、1ドル記号、または数字がない場合は0〜1(またはそれ以上)はドル記号と一致する必要があります。
編集:申し訳ありませんが、私は入力と出力の良い例を挙げませんでした。
入力:
foo$bar$$foofoo$353$foobar$123
abc$123$xyz$$123abc$def$$hij$456$klm
出力:
foo_bar_foofoo_foobar_123
abc_xyz_123abc_def_hij_klm
希望私が何をしたいの詳細は明らかです。
'\ $([0-9] + \ $ | \の$?)簡潔でテスト可能なサンプル入力と予想される出力を含めるように質問してください。 ' – melpomene
'/^\ $(\ d + \ $)?$ /' –
スクリプトが正しく機能しない場合や、入力と出力に一致させたい文字列の前後にコンテキストを含めること(削除しない場合)を含めることは特に重要です。 –