プロが教えるわが家の防犯対策術!

':hoge' => $
':piyo' => $
':puur' => $



':hoge' => $hoge,
':piyo' => $piyo,
':puur' => $puur,

へ置換したいのですが、うまくいきません。
どう書けば良いでしょうか?


■試したこと
・検索':\(.*?\)' => $
・置換':\1' => $\1,
※「':」と「'」の最短マッチを「\(.*?\)」でキャプチャしようしたのですが、ノーリアクションでした

A 回答 (2件)

ドル記号$をエスケープしていない等の誤りがあるからですね。



・検索  ':(\c+)' => \$
・置換  ':\1' => \$\1,

これで試してください。

あるいは、「検索」のほうはこうしてもいいです。
':([^']+)' => \$

この回答への補足

回答ありがとうございます。
おかげで望む結果が得られたのですが、参考までに教えてください。

■一つ目
「 \c 」はどういう意味なのでしょうか?

■二つ目
「 ':([^']+)' 」の意味は、
「':」と「'」の間にある「'」ではない文字の連続を取得、ということになるのでしょうか?
もしそうなら、この場合の「'」に特に意味はなく、
例えば、「 ':[^*]+' 」や「 ':[^@]+' 」でもいい、という理解で合っているでしょうか?

補足日時:2012/10/23 14:24
    • good
    • 0

■「 \c 」の意味について



[a-zA-Z_0-9] と同じ意味で、一般的には「\w」ですが秀丸では「\c」と書くことになっています。

■「 ':([^']+)' 」の意味について

> 「':」と「'」の間にある「'」ではない文字の連続を取得、ということになるのでしょうか?
その通りです!

ここで括弧を使っているのは、括弧内の正規表現にマッチする文字列を、置換先の文字列の一部として使うためです。
「':hoge' => $」だと「hoge」がマッチし、置換の「\1」の部分が「hoge」になります。
質問文にある、試した検索指定の正規表現では、括弧記号をエスケープしてしまっていたところにも誤りがありました。

> 「 ':[^*]+' 」や「 ':[^@]+' 」でもいい、という理解で合っているでしょうか?
括弧が必要だということを除けば、、、
マッチさせたい文字列がどういう規則で成り立っているのか、によります。
私は例として「'」ではない文字の連続という規則で書きましたが、任意の文字の連続ということでいいのなら、「':(.+)' => \$」で十分です。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
大変、参考になりましたー!

お礼日時:2012/10/24 15:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!