• ベストアンサー

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

お世話になります。 「\(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% (6803/9674)
回答No.1

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

関連するQ&A