◀ANSI版開発トップへ
  • 3743 正規表現キーワード重複?
    • 3744 RE: 正規表現キーワード重複?
      • 3745 Re2: 正規表現キーワード重複?
  • [3743] 正規表現キーワード重複? chikko 2004年09月09日 14:52

    正規表現キーワードを設定して色分けしていたのですが、
    どうしても上手く検出できないものがありました。

    <TAG Id=~

    この部分でTAGとIdを別々の色になるようにしたくて、

    <TAG は /<\s*\w+[\s|>]/k
    Id は /\s+\w+\s*=/k

    の様にしましたが、Idの方がマッチされませんでした。
    <TAG Id=~ とするとId=がマッチされるようでした。

    Idがマッチされないのは、"<TAG "で一度スペースがマッチ
    されてしまったため、" Id="のスペースを用いた
    マッチはできないのでしょうか?
    • [3744] RE: 正規表現キーワード重複? すい 2004年09月10日 03:03

      > <TAG は /<\s*\w+[\s|>]/k
      > Id は /\s+\w+\s*=/k

      なぜ、<TAG の方にスペースを含ませる必要があるのかがわからないのですが。
      /<\s*\w+>?/ とかじゃ駄目なんでしょうか?


      > Idがマッチされないのは、"<TAG "で一度スペースがマッチ
      > されてしまったため、" Id="のスペースを用いた
      > マッチはできないのでしょうか?

      その通り。そういう仕様ですね。
      一度、正規表現キーワードにマッチした文字は、以後、他の
      正規表現キーワードにはマッチする事がありません。
      そのルールをきちんと把握して、うまくコントロールする事が出来る
      ようになれば、かなり複雑な色分けも させる事ができるようになります。
      正規表現文字列の工夫次第です。


      蛇足ですが、タグとか言っている所を見ると HTML に対して
      正規表現キーワードを使用しようとしているように思えたのですが、
      それならば やめた方がよろしいかと。

      正規表現キーワードが ON の状態だと
      「1行の文字数が非常に多い、長い行を含むファイル」
      を開くと、エラーが発生してエディタが落ちてしまいますので。

      HTML って、仕様上は改行を入れる必要が無いので、世の中には
      改行が殆ど無くて、非常に長~い行を含む HTML が良く転がって
      いますので。すごい物だと

      「改行全く無し、<HTML> ~ </HTML> までが非常に長い1行に
       なっている HTML ファイル」

      とか、良くありますよね。

      その手の HTML ファイルを開いて見る事すら出来なくなりますよ。
      • [3745] Re2: 正規表現キーワード重複? chikko 2004年09月10日 09:32

        > > <TAG は /<\s*\w+[\s|>]/k
        > > Id は /\s+\w+\s*=/k
        >
        > なぜ、<TAG の方にスペースを含ませる必要があるのかがわからないのですが。
        > /<\s*\w+>?/ とかじゃ駄目なんでしょうか?

        そうですね。それをすれば確かに対応できますが、
        "<TAGID="を入力時に"="以外が全てマッチしてしまいますね。
        この辺りは、もう好みの問題になってくると思いますが...

        > > Idがマッチされないのは、"<TAG "で一度スペースがマッチ
        > > されてしまったため、" Id="のスペースを用いた
        > > マッチはできないのでしょうか?

        > その通り。そういう仕様ですね。
        > 一度、正規表現キーワードにマッチした文字は、以後、他の
        > 正規表現キーワードにはマッチする事がありません。
        > そのルールをきちんと把握して、うまくコントロールする事が出来る
        > ようになれば、かなり複雑な色分けも させる事ができるようになります。
        > 正規表現文字列の工夫次第です。

        ということは、対応した()のみをマッチするという事は、
        出来ないということですね。"<****>"などの表記の時に
        "<",">"のみ別の色にしたりしたかったのですが残念です。

        > 蛇足ですが、タグとか言っている所を見ると HTML に対して
        > 正規表現キーワードを使用しようとしているように思えたのですが、

        そうです。系統的には似ているXMLに対して使用しています。

        > 正規表現キーワードが ON の状態だと
        > 「1行の文字数が非常に多い、長い行を含むファイル」
        > を開くと、エラーが発生してエディタが落ちてしまいますので。

        今の所、エラーが発生した事はありませんが、
        注意したいと思います。

        質問にお答え頂き有難うございました。