• ベストアンサー

正規表現について教えてください

これから正規表現を勉強しようとする者です。 次の2点について教えて頂きたいのですが、よろしくお願いします。 1.次のような置換をする正規表現は? 例えば、 ■■■ あいうえお かきくけこ ■■↓ ○○○ あいうえお かきくけこ ○○○ というテキストがある場合、○○○~○○○までの「あいうえお」 のみを「アイウエオ」に置換するには、どのような正規表現にすれば 良いのでしょうか? 2.秀丸エディタでは、フォルダ内の全ファイルを一括で置換する 事はできるのでしょうか? 以上2点です。 よろしくお願いします。

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

  • ベストアンサー
  • NG_Chop
  • ベストアンサー率100% (1/1)
回答No.3

■■■ あいうえお ■■■ ○○○ 不特定な文字 あいうえお 不特定な文字 ○○○ という内容の ○○○~○○○までの「あいうえお」と言うことであれば、 (○○○)(.*)あいうえお(.*)(○○○) でヒットすると思うので \\1\\2アイウエオ\\3\\4 に置換すれば 書き換わると思います。 ※\\1等は$1等だったり環境によって違うと思います ○○○~○○○内の「あいうえお」が複数回登場する場合 (○○○任意文字列あいうえお任意文字列あいうえお○○○)であれば、上の正規表現置換を複数回実行することで全て置換できると思います。 phpで書くと以下のようになります。 $text=" ■■■ あいうえお ■■■ ○○○ 不特定な文字 あいうえお 不特定な文字 あいうえお ○○○ "; while( preg_match("/(○○○)(.*)あいうえお(.*)(○○○)/" , $text) ) { $text = preg_replace("/(○○○)(.*)あいうえお(.*)(○○○)/" ,"\\1\\2アイウエオ\\3\\4" , $text); }

lanpo55
質問者

お礼

回答ありがとうございます。 私の今の知識では分からない部分もありますが、アドバイスを元に調べながらやってみたいと思います。 詳しく書いて頂いてありがとうございました。

その他の回答 (2)

  • ShowZ
  • ベストアンサー率31% (67/210)
回答No.2

正規表現は万能ではありません(^^; 1. ○○○~○○○ 間だけとかいう条件は無理です. マクロを使用して下さい. 2. できます. マクロのサンプルのURL貼っておきます.

参考URL:
http://hide.maruo.co.jp/lib/macro/multirep111.html
lanpo55
質問者

お礼

回答ありがとうございます。 マクロをダウンロードして説明を見てみました。 私の今の知識ではハードルが高いですが、 これをきっかけに調べてみたいと思います。 作業を効率化するには、それなりの勉強が必要なんですね。 なにから始めればいいやら・・・(^_^;)

回答No.1

「○○○ あいうえお」を検索文字に、「○○○ アイウエオ」を置換文字にすれば置換できるはずです。 秀丸では無理だったと思います。 一括置換する場合は、フォルダ内の全てのファイルを1つのテキストエディタで開く必要があるので。

lanpo55
質問者

補足

回答をありがとうございました。 申し訳ありません。 例が間違ってました。 質問は次のような前後に不特定のテキストがある場合でした。 つまり、 1つのファイルの中でも、○○○~○○○までの中でというように、 ある範囲の中にあるテキストのみを置換したいのです。 ■■■ あいうえお ■■■ ○○○ 不特定な文字 あいうえお 不特定な文字 ○○○ 失礼しました。 よろしくお願いします。

関連するQ&A

  • テキストエディタでの置換(正規表現チェック済)と同様のことを

    テキストエディタでの置換(正規表現チェック済)と同様のことを エクセルのマクロでもしたい。 画像を添付しましたが、秀丸で置換を選択し、 検索文字列と置換文字列を入れて、正規表現チェックのチェックボックスを 選択した状態で実行するのと同様のことをエクセルのマクロで行いたいです。 正規表現混みだととても難しいです。 やりたいことはマクロで、フォルダ内のテキストファイルを置換をかけていきたいです。(テキストファイルは複数ある状態)そのテキストファイルを更新できればいいです。(別テキストで出力されてもいいです。) どなたか詳しい方、教えていただけませんでしょうか? よろしくお願いいたします。 --- 検索エディタ【秀丸】【置換】 検索【.*item1=(.*) item2=(.*) .*】 置換【\1\t\2】 正規表現チェック

  • 正規表現で一括置換

    現在、数多くの長文データを、テキストエディタの置換機能で一括置換しています。 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の複数一括置換でこれをなんとかしたいのです。ご存じの方、どうぞ教えてください。よろしくおねがいします! 秀丸エディタをご利用で、正規表現にくわしい方も、ぜひヒントを出していただければと思います。

  • 正規表現

    @1, @2, @3,......と縦に続くテキストをテキストエディター上で一括削除したいのですが、そのときの正規表現を教えてください。

  • 正規表現で置換

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

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

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

  • 秀丸での正規表現

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

  • 秀丸の正規表現

    秀丸の正規表現 http://pc.dearie.jp/hidemaru/replace/14.html 上記URLでメールの正規表現について解説があります。 [A-Za-z0-9\-\.\_]+@[A-Za-z0-9\-\_]+\.[A-Za-z0-9\-\.\_]+ この正規表現でメールの検索をおこなっています。この正規表現は理解出来ます。 .*([a-z0-9\-\.\_]+@[a-z0-9\-\_]+\.[a-z0-9\-\.\_]+)([^a-z0-9@\.\-\_]+).* キャプチャを使って正規表現でメールアドレスをマッチしているのは理解できます。 なぜ置換で、「\1,」とやっても、メールアドレスのみを取得できないのでしょうか? 実際に秀丸エディタを使ってやってみましたが、メールアドレスのみ取得することができませんでした。 検索ではメールアドレスにマッチするのに、なんでキャプチャが正しく動かないのかがわかりません・・・

  • 正規表現について教えてください。

    Perlとは関係ないのですが、正規表現での置換ができるエディタで改行二つを一つにしたいです。 置換前 \n\n 置換後\n としてみたのですがうまくいきません。まちがってたら教えてください。 CRLFとか気にしないといけないのかな。

    • ベストアンサー
    • Perl
  • 秀丸の正規表現はどの流派に属しているのですか?

    秀丸エディタ64 (バージョン8.20)を使用しています。 秀丸の正規表現は、どういった流派(?)の流れを汲んでいるのでしょうか?よく、○○互換の正規表現という言葉がありますよね。Perl互換、.NET互換など、、、Java、C、そのほかの言語/プラットフォームで秀丸の正規表現に最も近いのは何でしょうか、教えてください。

  • 正規表現で全角数字を半角数字に置換する方法は?

    いつもお世話になっております。 テキスト内の全角数字5桁のみを該当の半角数字5桁に置換する方法を探しています。 OS:Win テキストエディタ:sakuraエディタ、秀丸 例) ---------------------------------------- あいうえお01234かきくけこ99さしすせそ ↓ あいうえお01234かきくけこ99さしすせそ ---------------------------------------- 正規表現で行えばいいと思い、置換文字列を  [0-9][0-9][0-9][0-9][0-9] あるいは  [0-9]{5} にしましたが、置換後の文字列が分かりません。 試しに検索で上記の文字列を試すと、該当箇所がマークされるので、 置換前の文字列は合っています。 置換後の文字列をご教授願えますでしょうか。 ※テキストエディタで無理ならプログラム組みます。 VBScriptを考えていますが、他に良い言語があれば併せて教えてください。

専門家に質問してみよう