• ベストアンサー

正規表現で無条件にヒットさせたい

正規表現で"『』"に囲まれた文字列を無条件にヒットさせたいです。 今は"『(.+?)』"を使用していますが 『』内に途中で改行が入ってしまうと、ヒットしなくなってしまいます。 例 『あいうえお』では、"『"~"』"まで全てヒットしますが 『あいう えお』では、全てヒットしません。 正規表現はあまり詳しくないので・・・ 回答よろしくお願いします。

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

  • ベストアンサー
  • kumoz
  • ベストアンサー率64% (120/185)
回答No.3

秀丸の正規表現は、改行に関して少し特殊な正規表現です。正規表現の中に実際に 書かれている \n の数にプラス1をした行数以下にしかマッチしません。次の URL の終わりのほうを参照ください。 http://homepage2.nifty.com/jr-kun/hidemaru_qa/4_regulr.html > 実際に使うときは『』の中に何回も改行が入ることがあります。 > とにかく『』の中を無条件にヒットさせるものはないでしょうか? 残念ですが、簡単な正規表現で無条件にヒットさせるのは難しいように思います。 ほかのツールでは 『(.*\n)*?.*?』 の正規表現でマッチさせることができますが、 秀丸では3行以上のブロックにはマッチしません。実用的ではないですが、 『(.*\n)??(.*\n)??(.*\n)??(.*\n)??.*?』のように、必要な分だけ \n を書く以外 にないと思います。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

単純にヒットさせるだけなら 『(.|\n)+?』 でいいかもしれない. ただし 『 』 にもヒットしちゃうことには注意. どうしても『~』の中に (改行以外で) 1文字入れたいなら... 『((.|\n)*?[^』](.|\n)*?』 かなぁ? ちょっとこっちは不明. ちなみに Perl でも m//m か m//s のどちらかでよかったはず>#1.

yue_1995
質問者

補足

試してみましたが、ダメでした。 ありがとうございました。 実際に使うときは『』の中に何回も改行が入ることがあります。 とにかく『』の中を無条件にヒットさせるものはないでしょうか?

回答No.1

改行を取ってやれば #!/usr/local/bin/perl $foo = "『あいう\nえお』"; $foo =~ s/\n//g; $foo =~ m/『(.+?)』/; print $1;

yue_1995
質問者

補足

秀丸エディタで指定した文字列を強調する設定なので 改行を削除したりはできません。 すいません。

関連するQ&A

  • 正規表現で固定長に揃えたい

    正規表現で固定長に揃えたい 秀丸など正規表現のできるエディタを使用し リターンを含まない長い文字列を固定長にしたいです <例> あいうえおかきくけこさしすせそたちつてとなにぬねのはひふ ↓10文字ずつ改行 あいうえおかきくけこ さしすせそたちつてと なにぬねのはひふ よろしくお願いします

  • 正規表現について

    正規表現を使用して文字列の置換(ereg_replace)をしたいと思うのですが、 うまくいかず悩んでおります。。 以下の文字列があったとします。 【AAA】【BBB】【CCC】DDD 文字列の中から先頭から始まる【】でくくられたものだけ(【AAA】)だけ削除して、 結果を【BBB】【CCC】DDDとしたいのですが、正規表現でどのようにヒットさせればよいのか分りません。 ※【】の中にくる文字はAAAとは限りません。 お手数ですがご教授頂けますでしょうか。

    • ベストアンサー
    • PHP
  • 正規表現についてお教え下さい

    正規表現についてお教え下さい。 )以外の全ての文字列(改行・Tab・空白等含む)の1回以上の繰返しという記述は正規表現ではどのような記述になるでしょうか? NoEditorで下記のような条件でgrepしようとしたのですがうまくいきません。 [[^[^\)]] \t\n\r\f]+ 具体的には下記のような5行があった場合、以下のような条件で1、2、3行目を抽出できるということを想定しています。 条件:AAA )以外の全ての文字列の1回以上の繰返し \) ※現状の条件の記述はAAA[[^[^\)]] \t\n\r\f]+\) 1行目 AAAあ(aaa) 2行目 AAA あ(aaa) 3行目 AAA あ 4行目 (aaa) 5行目 AAA)

  • 正規表現で特定の記号を抜かしてヒットさせるには

    javaで正規表現を使用してプログラムしています。 ある条件を入力させて、"."や","の記号を抜かして、 ヒットさせるしたいと思っています。 例えば "あいう"で検索かけた場合、 "あ.い,う"という単語をヒットさせて ヒットした結果を置換したいのですが、できますでしょうか。 正規表現で無くてもよいのですが、現在、多少複雑な正規表現でマッチングしている処理があり、それに簡単に付け加えれば、"."や","をヒットするように出来ないかと思っています。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 正規表現で何文字目から何文字目までのヒット

    正規表現で何文字目から何文字目までのヒット 正規表現を使い、何文字目から何文字目までをヒットさせたいです。 例えば、下記の英字があります。 abcdefg 6文字目~7文字目をヒットさせたいです。この場合は、「fg」にヒットさせたいです。 先頭から何文字目までヒットというのならわかるのですが、特定の文字数から文字数まで ヒットさせたいという場合、どのような正規表現を組めばいいのでしょうか?

  • 複数行をヒットさせる正規表現

    ~ 省略 ~ ==abc== ! ああ !: あいうえお ! いい !: いうえおあ ==def== ~ 省略 ~ とあった時、==abc==から==def==の間を全て取得したいのですが、 どうにも改行文字の所で止まってしまい、==abc==までしか 取得する事が出来ません。 ~ 省略 ~部分は全く同じ形式で文字列が大量にありますが、 ==abc==、==def==は1箇所にしか存在しません。 どういう正規表現をすれば上記全ての文字列を取得する事が出来るのでしょうか?

    • ベストアンサー
    • PHP
  • PHPにおける正規表現について

    PHPにおける正規表現について ご教授ください。 いわゆる、対象の文字列が複数行にわたっていた場合のことです。 $data = <<< EOF ABCDE FGH EOF; $hoge = preg_match("/EF/" ,$data,$match); と上記のようなコードがあった場合 対象の文字列群から【EF】という文字列を検索したい場合、どのように記述したら 【E(間に改行)F】の文字列と一致させる事ができるでしょうか? 仮に正規表現の修飾子の【s】や【m】を用いても上記の例の場合 一致させることができないと思います。 やはり、対象の文字列群 $data の改行文字をいったん削除したものから検索 するのがベターでしょうか? 正規表現に造詣の深い方よろしくご教授ください。

    • ベストアンサー
    • PHP
  • 正規表現にて質問があります。

    テスト勉強をやっていて過去問をみたら正規表現の部分だけわからずにいます (1)α=(0|10)*2(1|00|010)+ (2)α=(ab|c)*c(bc|a)+ (3)α=(1|22)*a(333|4444)* (1)正規表現αが表す文字列内、文字列長が1のものすべてを列挙せよ (2)正規表現αが表す文字列内、文字列長が2のものすべてを列挙せよ (3)正規表現αが表す文字列内、文字列長が3のものすべてを列挙せよ (4)正規表現αが表す文字列内、文字列長が4のものすべてを列挙せよ の答えを教えてもらえないでしょうか? もしよろしければどうやってとけばいいかのアドバイスもお願いします

  • Perlの正規表現

    Perlの正規表現で質問です。 例えば、 "aabbccddee"と"cdde"という2種の文字列があるとして"cdde"だけを検索(または置換)したい場合の正規表現ってどのようにすればよいのでしょうか? いま、"cdde"で検索すると"aabbccddee"と"cdde"の2種類がヒットしてしまうのですが"cdde"だけヒットするような正規表現をどなたかご教示ください。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • 文字列を含まないという正規表現は?

    お世話になります。 例えば、文字「a」を含まないという正規表現は、 "[^a]" となりますが、文字列「abc」を含まないという正規表現はどうなりますでしょうか? "[^abc]" ではだめでしたし、 "[^(abc)]" でもだめでした。 また、改行などの制御文字を含めたどんな文字でもいいという正規表現はどうなりますでしょうか? ".*" では改行などが含まれるときはだめでした。 どうかご教授のほどよろしくお願い致します。 次のサイトは参考にしたサイトです。 正規表現の解説 目次 http://www4.ocn.ne.jp/~kaerume/k2e/regex_top.html#mnu_top