• ベストアンサー

秀丸での正規表現での置換方法

お世話になります。 「\(1)\(2)\(3)\(4)\(5)」と言う文字があります。 置換して 「\(1)\(2)\Y\(3)\(4)\(5)」 にしたいのですが、 検索:「\\(.+)\\(.+)\\(.+)」 置換:「\\\1\\\2\\Y\\\3」 とすると 「\(1)\(2)\(3)\(4)\Y\(5)」 となって、(2)の後ろに入ってくれません。 どのようにすれば(2)の後ろ(2個目のエンマークの後ろ)に 置換することができるのでしょうか? 何卒よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6654/9431)
回答No.1

秀丸に限らず、正規表現のワイルドカード(「.*」あるいは「.+」)では、始めの物が一番長くマッチするように動くことが多いです。 「.」がどんな文字にもマッチすることによる仕様です。 つまりkgyqk433さんの指示では、正規表現最初の「\\(.+)」の部分に「\(1)\(2)\(3)」がマッチしているため、その様な結果になってしまいます。 「.+」の部分を「[^\\]+」として指定、つまり「円記号を含まない1文字以上の文字列」としてやれば、希望の動作になると思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 秀丸の置換で正規表現を使う方法を教えてください

    お世話になります 秀丸エディタの置換を用いて、 (’.ab12#-cd’)のような文字列や数字、記号のまじった ( )から( )の中身を検索置換して (’’)にしたいと考えています。 具体例 (’.ab12#-cd’) (’.ab#37-c’) (’..ab-82#d%’) (’.12jg+#ppv’) (’.ab12lentext’)から ↓ (’’)に置換したい。 秀丸を使うときはあっても単純な 一文字程度の検索置換しかおこなったことがなく どうにも方法がうかばなかったところ 友人から、正規表現というものを 使えば実現できるようだと聞きました。 友人も残念ながら、プログラミングの経験は あまりなくて正規表現での記述方法は わからないいうことでした。 正規表現を使ってこれを実現する方法を 教えていただけませんでしょうか よろしくお願いいたします

  • 秀丸で正規表現を使って置換

    あるファイルに関して、このような置換を行いたいです。 abc/xxx,yyy,zzz.html ↓ abc/xxx.html xxxとyyyとzzzはある任意の文字列(英数字で文字数はばらばら)で 「abc/」と「,」と「.html」は固定の文字列になります。 そこで、秀丸で開いて、正規表現による検索で、 「abc/.*,.*,.*.html」 として検索すると、該当部分が検索できることがわかりましたが、置換後をどのように設定すればいいのかわかりません。 置換後のabc/xxx.htmlの「xxx.html」の部分は検索前の任意の文字列をそのまま残したいのです。 秀丸の置換機能でこのようなことは可能でしょうか? 正規表現に関してあまり詳しくないので教えてください。

  • 秀丸での正規表現を使用した置換

    いつもお世話になっております。 秀丸で正規表現を使用した置換処理を行いたいと思うのですが、どうしても正規表現の式が書けません。 どうかご教示下さい。 <置換前> ABC1 あAbCd++ ... ... ・先頭4文字は半角英数字の大文字固定 ・その後ろにタブ ・最後にかな、英数字、記号などの可変長の文字列 上記で1レコードです。 <置換後> ABC1 String 内容 あAbCd++ ... ... ・先頭4文字そのまま ・その後ろにタブを3つ+改行 ・続いて「内容」という文字列+改行 ・最後に可変長の文字列をそのまま+改行 「置換」の正規表現は以下だと思うのですが、英数字4文字と可変長文字列を別々にマッチさせる「検索」がどうしても分かりません。 \0 String\n内容\n\1\n どうかご教示下さい。 <環境> Ver.6.1.4

  • 秀丸の正規表現を使って置換

    三番目の引数が0かNULL、nullならば、以下のように秀丸で置換したいのですが、やり方がわかりません。正規表現を使って置換したいです。 abcmethod(aaa, bbb, 0, ccc)やabcmethod(aaa, bbb, null, ccc)    ↓↓↓↓↓↓ abcmethod(aaa, bbb, ccc) aaa,bbb,cccは任意の文字半角アルファベットや数値です。 abcmethod(.+,.+,.+,.+)で、検索できますが、置換の仕方がわかりません。 どうぞよろしくお願いします。

  • 秀丸での、正規表現を使った置換

    秀丸での、正規表現を使った置換 \t第*.条*. (例えば「第1条」「第2条」「第3条」など) にマッチするものを、 \n第*.条*.\n のフォーマットに変換したいです。 しかし、変更後を「\n第*.条*.\n」でしていすると、 置換後の文字自体が、アスタリスクになってしまい、 例えば「第1条」「第2条」「第3条」などが、 すべて「第*.条」「第*.条」「第*.条」などになってしまいます。 数字部分を残しつつ置換するにはどうすればよいでしょうか?

  • 正規表現で置換

    正規表現の初心者です。 テキストエディタを使って、「@:」で始まる以外の行の先頭に「//」を挿入してコメントアウトしたいのですが、正規表現がうまく書けません。 検索対象: ^[^(@:)] 置換文字列: // でいいのかなと思ったのですが、[]の中ではグルーピング用の()も文字として認識されてしまうのですね。 どのように書いたら正しく置換されるでしょうか。 どうかご教示ください。

  • 秀丸の置換

    いつもお世話になっています。 秀丸の置換でいろいろ検索したのですが、どうしても わからなくて質問させていただいています。 というか、私のやりたいことができるのかどうかも 不安なところなのですが・・・・(汗) 添付の画像のように2行の空白の改行の後に文章がはじまります。 その文章の始まりに●を入れたいのですが、マクロか置換で やり方はあるでしょうか?

  • 秀丸での正規表現

     秀丸エディタVersion 7.11、HMJRE.DLL V1.92 を使用しています。  下記上のような4行のテキストファイルから、数字以外で始まる行を空行に置換しようと思い、検索文字列を「^[^0-9].*」、置換文字列を「」(なし)に設定したのですが、3行目のx だけからなる行は削除されませんでした(下記下のようになりました。このとき、カーソルは変換後の2行目の一番左のx の右側にあります)。 置換前 >11111 > >xxxxx >[EOF] 置換後 >11111 >xxxxx カーソルは左端のx の右側 >[EOF]  11111 とxxxxx の間にもう1行空行を入れると、所望の動作となります。  正規表現の指定が間違っているのでしょうか。

  • 秀丸の正規表現について

    秀丸の正規表現で困っています。 改行ありのタグを抜かして改行のないタグだけを検索して置換したいのです。 <メール><ブログ>hogehogeなんちゃら</ブログ></メール> ↓ <教えて><goo>hogehogeなんちゃら</goo></教えて> は 検索:<メール><ブログ>(.+?)</ブログ></メール> 置換:<教えて><goo>$1</goo></教えて> で 置換できますよね。 でわ、 <メール><ブログ>hogehogeなんちゃら</ブログ></メール> <メール><ブログ> fumfumuなんちゃら fumfumuなんちゃら</ブログ></メール> ↓ <教えて><goo>hogehogeなんちゃら</goo></教えて> <メール><ブログ> fumfumuなんちゃら fumfumuなんちゃら</ブログ></メール> とhogehogeなんちゃらのタグだけ変えるには 検索と置換をどうしたらよいのでしょうか? 検索だけなら 検索:<メール><ブログ>[^\n]+</ブログ></メール> でできるようですが、置換もするとなると どのように検索と置換をすればよいのでしょうか?

  • 正規表現で一括置換

    現在、数多くの長文データを、テキストエディタの置換機能で一括置換しています。 jeditX(または秀丸エディタ)の正規表現をもちいた複数一括置換について質問させていただきます。 私は正規表現やPC言語の初心者です。どうぞよろしくお願いいたします。 かなり困り果てております。どうぞ、正規表現にくわしいかた、よろしくお願いします。 一二三『一二三にそれぞれ♪マーク』 という文章に対して 一♪二♪三♪ という一括置換をすることには成功しました。 こう書いています。 ■検索文字列 (.{1,1})(.{1,1})(.{1,1})『(.{1,1})(.{1,1})(.{1,1})にそれぞれ♪マーク』 ■置換文字列 \1♪\2♪\3♪ これでぶじ、以下のように一括置換できました。 一♪二♪三♪ 現実には傍点や圏点をふっているんですが、判りやすく♪マークにしています。 この調子で長い文章も変換できていて満足していたのですが…… しかし代入文字が10個以上になったとたんに、まったく動きません。 ■置換したい文章 一二三四五六七八九十『一二三四五六七八九十にそれぞれ♪マーク』 ■検索文字列 (.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})『(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})にそれぞれ♪マーク』 ■置換文字列 \1♪\2♪\3♪\4♪\5♪\6♪\7♪\8♪\9♪\10♪ こうやると、置換後の文章は以下のようになってしまいます。 一♪二♪三♪四♪五♪六♪七♪八♪九♪一0♪ 10個目以降の数字が、正しく機能してくれません。 \10  という正規表現の書き方は 「一番目の値を参照して、それから数字の0を記入しなさい」 という意味になってしまうようです。 わたしは十番目の値を代入してほしいだけなんです。 \1 や \2 や \3 といった代入文字のように \10 や \11 を機能させる、正しい表記をご教授ください。よろしくお願いいたします。 ちなみに以下のように書いてもダメでした……。 \1\0 グーグルで1日中検索しても判りませんでした。jeditXの複数一括置換でこれをなんとかしたいのです。ご存じの方、どうぞ教えてください。よろしくおねがいします! 秀丸エディタをご利用で、正規表現にくわしい方も、ぜひヒントを出していただければと思います。

専門家に質問してみよう