◀一般トップへ
  • 6125 正規表現の「戻り読み」について
    • 6126 Re:正規表現の「戻り読み」について
      • 6128 Re2:正規表現の「戻り読み」について
  • [6125] 正規表現の「戻り読み」について line 2007年07月01日 07:12

    タイプ別の設定で新たな強調表示を作っています。

    xxx = { aaa = { bbb = ccc } } #コメント
    xxx = { ddd = eee }
    yyy = { fff = ggg } #コメント

    たとえばこのようなコードの中で、先頭にxxx = {が存在する場合のみ、最後の(対応する)}を強調表示したいのです。
    「戻り読み」というのを使えば出来るかな?と思い、鬼車のdllを導入して
    /(?<=xxx.*)}(?!.*}.*)(?=(?:\s*|\s*#|#).*\n)/k
    という正規表現を作ってみたのですがエラーが出てしまいました。
    正規表現テスターのテストではうまくいったのですが、エディタでは戻り読みでは量指定子を伴って使う事は出来ないのでしょうか?
    また、別の方法で実現出来そうならばアドバイスをいただけると幸いです。
    • [6126] Re:正規表現の「戻り読み」について K.Takata 2007年07月01日 10:58

      ▼ lineさん
      > エディタでは戻り読みでは量指定子を伴って使う事は出来ないのでしょうか?

      これは鬼車の制限です。鬼車のドキュメント(*)に書かれているとおり、戻り読みの式は固定文字長でなければなりません。

      (*)http://www.geocities.jp/kosako3/oniguruma/doc/RE.ja.txt
      • [6128] Re2:正規表現の「戻り読み」について line 2007年07月02日 21:49

        takataさん、解説ありがとうございます。
        これはbregonig.dllにおいてもあくまで固定長の文字列で文字数が違うものを一度に|で扱うことができ、*や+は使用できないという事ですよね。
        鬼車でこういった条件を扱うのは難しいようですね。}に色をつけるのはいったんあきらめる事にします。

        早いレスありがとうございました。