- ベストアンサー
秀丸で、正規表現キャプチャを利用して、置換をしたい
':hoge' => $ ':piyo' => $ ':puur' => $ を ':hoge' => $hoge, ':piyo' => $piyo, ':puur' => $puur, へ置換したいのですが、うまくいきません。 どう書けば良いでしょうか? ■試したこと ・検索':\(.*?\)' => $ ・置換':\1' => $\1, ※「':」と「'」の最短マッチを「\(.*?\)」でキャプチャしようしたのですが、ノーリアクションでした
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
■「 \c 」の意味について [a-zA-Z_0-9] と同じ意味で、一般的には「\w」ですが秀丸では「\c」と書くことになっています。 ■「 ':([^']+)' 」の意味について > 「':」と「'」の間にある「'」ではない文字の連続を取得、ということになるのでしょうか? その通りです! ここで括弧を使っているのは、括弧内の正規表現にマッチする文字列を、置換先の文字列の一部として使うためです。 「':hoge' => $」だと「hoge」がマッチし、置換の「\1」の部分が「hoge」になります。 質問文にある、試した検索指定の正規表現では、括弧記号をエスケープしてしまっていたところにも誤りがありました。 > 「 ':[^*]+' 」や「 ':[^@]+' 」でもいい、という理解で合っているでしょうか? 括弧が必要だということを除けば、、、 マッチさせたい文字列がどういう規則で成り立っているのか、によります。 私は例として「'」ではない文字の連続という規則で書きましたが、任意の文字の連続ということでいいのなら、「':(.+)' => \$」で十分です。
その他の回答 (1)
- すもあん(@ryoyama)
- ベストアンサー率56% (45/80)
ドル記号$をエスケープしていない等の誤りがあるからですね。 ・検索 ':(\c+)' => \$ ・置換 ':\1' => \$\1, これで試してください。 あるいは、「検索」のほうはこうしてもいいです。 ':([^']+)' => \$
補足
回答ありがとうございます。 おかげで望む結果が得られたのですが、参考までに教えてください。 ■一つ目 「 \c 」はどういう意味なのでしょうか? ■二つ目 「 ':([^']+)' 」の意味は、 「':」と「'」の間にある「'」ではない文字の連続を取得、ということになるのでしょうか? もしそうなら、この場合の「'」に特に意味はなく、 例えば、「 ':[^*]+' 」や「 ':[^@]+' 」でもいい、という理解で合っているでしょうか?
お礼
回答ありがとうございました。 大変、参考になりましたー!