◀一般トップへ
  • 2029 クォーテーションの処理について
    • 2030 クォーテーションの処理について(追伸)
      • 2031 RE: クォーテーションの処理について(追伸)
        • 2032 RE2: クォーテーションの処理について(追伸)
        • 2034 Re2: クォーテーションの処理について(追伸)
        • 2035 RE2: クォーテーションの処理について(追伸)
          • 2038 Re3: クォーテーションの処理について(追伸)
          • 2039 Re3: クォーテーションの処理について(追伸)
            • 2041 Re4: クォーテーションの処理について(追伸)
              • 2042 Re5: クォーテーションの処理について(追伸)
                • 2044 Re6: クォーテーションの処理について(追伸)
                  • 2046 Re7: クォーテーションの処理について(追伸)
                    • 2051 Re8: クォーテーションの処理について(追伸)
                      • 2057 Bregexp.dll
  • [2029] クォーテーションの処理について かご 2002年06月20日 10:42

    はじめまして。Perlでの利用を考えています。
    ソース中に
    &jcode'convert(*value,'jis');
    のような表現があるCGIを作成する場合、このはじめの'クォーテーションが
    囲む始まりとして扱われてしまい、複数の行にわたって、カラーリングされてしまいます。
    どこかの設定を変えることで、正しい範囲に設定できるものでしょうか。
    正規表現でできるのかもしれませんが、もしおわかりの方いらっしゃったら
    教えてください。
    • [2030] クォーテーションの処理について(追伸) かご 2002年06月20日 10:44

      すみません。追伸です。
      同じく
      $name =~ s/\"//g;
      このような行の影響でダブルクォーテーションが文字列範囲の
      始まりとして認識されてしまいます。

      カラーリングしないというのも手かと思いますが、できるなら
      カラーリングさせたいので。
      • [2031] RE: クォーテーションの処理について(追伸) すい 2002年06月20日 12:40

        >>ソース中に
        >>&jcode'convert(*value,'jis');
        >同じく
        >$name =~ s/\"//g;
        >カラーリングしないというのも手かと思いますが、できるなら
        >カラーリングさせたいので。

        現状「色表示をoffにする」以外の方法は無し、かと。
        # 将来的にも無理では?
        # どういう時には色分けし、どういう時には色分けしない、という汎用的規則(アルゴリズム)が無いでしょ?
        # それとも何かあります? 妙案アルゴリズム

        なので私は末尾に注釈入れてます。↓とか
        # 泥臭い

        &jcode'convert(*value,'jis'); # '
        $name =~ s/\"//g; # " # わはははは " は削除だ削除!!

        これで次の行以降だけはなんとか救えますので。(;^^;)
        • [2032] RE2: クォーテーションの処理について(追伸) やざき 2002年06月20日 13:02


          >なので私は末尾に注釈入れてます。↓とか
          ># 泥臭い
          >
          >&jcode'convert(*value,'jis'); # '
          >$name =~ s/\"//g; # " # わはははは " は削除だ削除!!
          >
          >これで次の行以降だけはなんとか救えますので。(;^^;)

          なるほど、グッドアイディア。
        • [2034] Re2: クォーテーションの処理について(追伸) げんた 2002年06月20日 13:22

          >現状「色表示をoffにする」以外の方法は無し、かと。
          perlのルールはかなり柔軟性が高い=特殊パターンが多いので,単純な文字列比較では完全な色分けは難しいですね.現状でも色分け部分はべったりと書かれていて1関数で1000行とかいう状態ですので,これを整理しないとちょっと難しいかも.

          Perlの色分けが欲しくなりそうなところ.
          `` も色分けしたい.
          q, qq, qx, qr, qw の引用.qq#abc# のときは初めと同じが終わりだけどqq{} のときは対応する括弧.
          $#ARGVの#はコメントじゃない.
          $', $` は引用じゃない.
          s/abc/def/ や m// は色分けするの??RE? というのもあるな.
          s{abc}{def}とも書ける.
          オプションにx付けて置換パターンにスクリプト書いたときは?
          <<EOF
          EOF

          >なので私は末尾に注釈入れてます。↓とか
          >これで次の行以降だけはなんとか救えますので。(;^^;)
          同じく.
        • [2035] RE2: クォーテーションの処理について(追伸) ai 2002年06月20日 13:30


          >これで次の行以降だけはなんとか救えますので。(;^^;)

          私は、みくさんのホームページにあるquort.rkwを頂いて正規表現で対応しています。
          次の行以降を救うのであれば試してみてはいかがでしょうか。
          かごさんの要望は解決しませんが…
          既に御存知でしたら申し訳ありません。
          • [2038] Re3: クォーテーションの処理について(追伸) かご 2002年06月20日 22:12

            ▼ aiさん
            >
            > >これで次の行以降だけはなんとか救えますので。(;^^;)
            >
            > 私は、みくさんのホームページにあるquort.rkwを頂いて正規表現で対応しています。
            > 次の行以降を救うのであれば試してみてはいかがでしょうか。
            > かごさんの要望は解決しませんが…
            > 既に御存知でしたら申し訳ありません。

            aiさんはじめ、ご助言いただいた皆様ありがとうございます。
            コメントを行末に追加するというアイデアには感心しました。
            でも、今回は、このquort.rkwの方でなんとか使おうと思います。
            別のエディタでは、この文字列の囲みの扱いがうまくいっている場合があります。
            すべてではないかもしれませんが、少なくとも、先に例として挙げた文字列の場合に。
            正規表現でもっと細かく指定すれば、いいのかもしれませんが、そこまで
            頭が回らなくて...(^_^);
          • [2039] Re3: クォーテーションの処理について(追伸) すい 2002年06月21日 00:24

            > 私は、みくさんのホームページにあるquort.rkwを頂いて正規表現で対応しています。

            ああ、そうやれば良いのか。 (*^o^*)
            いやぁ、私は末尾に # ' とか付けるのって無駄なゴミが付くから嫌いだったんですよ。
            言い出しておいてなんですが(笑)(笑)(笑) :-P

            ですが、この quort.rkw を見ていたら「ちょっと変えれば perl 専用のヤツ出来そうじゃん」
            とか思ってちょっと perl 専用に変えてみました。

            評価求む。って、評価で「ダメ」って言われても、そうそう直せるとは思えませんが。 :-(
            っていうか不味かったら自力で直して。(笑) > 正規表現のエキスパートな方
            http://www.egroups.co.jp/files/sakura-editor/User/Data/Perl.lzh
            • [2041] Re4: クォーテーションの処理について(追伸) かご 2002年06月21日 12:09

              ▼ すいさん
              > ですが、この quort.rkw を見ていたら「ちょっと変えれば perl 専用のヤツ出来そうじゃん」
              > とか思ってちょっと perl 専用に変えてみました。

              うぉ!すばらしい。私も同様にできないか正規表現を勉強しなおしているうちに
              できてしまっているとは。早速使わさせて頂きます。
              こちらの環境では、rkwファイル中のTXTやSQTを「テキスト」や
              「シングルクォーテーション文字列」と置き換えないとインポートできませんでしたが。

              > 評価求む。って、評価で「ダメ」って言われても、そうそう直せるとは思えませんが。 :-(
              > っていうか不味かったら自力で直して。(笑) > 正規表現のエキスパートな方

              というか、充分エキスパートとお見受けしますが。
              ...と甘えついでに、$や@で始まる変数を強調表示させたいのですが、
              どのような正規表現になるでしょうか。同じく、$が含まれていても変数でない場合には、テキストとして扱いたいのですが。

              もし、お時間が許されるようでしたら、教えてください。
              私も勉強し直してみますが。
              • [2042] Re5: クォーテーションの処理について(追伸) すい 2002年06月21日 12:48

                早くも、あちこちマズイ点がみつかり、あわてて修正。
                http://www.egroups.co.jp/files/sakura-editor/User/Data/perl_20020621.lzh

                ・仕様の理解度が低いことが露呈する恥ずかしいミスを修正(笑)
                ・"" 中での \ の処理をまともにした。
                他、色々

                >...と甘えついでに、$や@で始まる変数を強調表示させたいのですが、
                >どのような正規表現になるでしょうか。同じく、$が含まれていても変数でない場合には、テキストとして扱いたいのですが。

                対応(つもり)
                • [2044] Re6: クォーテーションの処理について(追伸) すい 2002年06月21日 20:41

                  さらに修正。
                  http://www.egroups.co.jp/files/sakura-editor/User/Data/perl_20020621_20.lzh

                  一応、全修正履歴(同梱の perl.txt より抜粋)

                  ★ 履歴
                    2002/06/20
                      初版

                    2002/06/21-12時
                      ・q qq qx 扱いが目茶苦茶だったのを修正。
                       qq 後の括弧は ( ) か { } しかないはずなのに [ ] を入れてしまっていたり(恥)
                       qq 直後のタブやスペースをスキップしていなかったりした。
                      ・"" 中での \ の処理をまともにした
                       文字列中で「 \ のすぐ後ろの " は文字列終端ではない」という単純処理だったため
                       "C:\\Windows\\" で " が終端として扱かわれなかったのを直した。
                       # まだ制限あり。「さまざまな制約」参照。
                      ・q qq qx 単体でも色分けするようにしてあったが、それに対する除外処理が不完全であった。
                       (変数名や何かに q が使われている場合に、「その q はシングルクォートじゃぁない」
                        という処理が不完全だった)
                      ・かご さん「$や@で始まる変数を強調表示」要望に対応
                      ・このファイルと色指定ファイルも同梱。

                    2002/06/21
                      ・$q や $qq が変数表示にならなかった。
                      ・$ppp'var が $ppp のみ変数表示で 'var 以降がシングルクォートになってしまっていた。
                       $#ppp'var も同様だった。
                       (2002/06/21-12 で変数の色分けをおこなった時に混ざった不具合。記述がいい加減過ぎました m(_ _)m)
                      ・たわむれに &func も色分けしてみた。
                      ・"\\" とか "\\\\" で、末尾の " が文字列の終端扱いにならなかった。
                       qq(\\) とか qq(\\\\) , qq{\\\\\\} , qx(\\) とかも同様
                       ↑この対処で、どさくさに紛れて qq{} が色分けされなかった不具合も直った。
                      ・$$ver とかに対応していなかった。まだ対応は不完全だと思います。
                       でもひょっとして対応しない方が良かった?
                       $$var は ${$var} という扱いなわけで、$var 部分のみ色分けされた方が...っていう気もちょっとする。

                  end of file
                  • [2046] Re7: クォーテーションの処理について(追伸) すい 2002年06月22日 00:05

                    >さらに修正。
                    さらに修正。
                    http://www.egroups.co.jp/files/sakura-editor/User/Data/perl_20020621_21.lzh

                    正規表現を見直して無駄な記述を削減、整理整頓しただけで、
                    処理内容には変更は全く無い(はず)ですが。

                    無駄な処理が減ったはず。
                    定義も7行減りました。
                    • [2051] Re8: クォーテーションの処理について(追伸) すい 2002年06月24日 20:25

                      >>さらに修正。
                      >さらに修正。
                      さらに修正。

                      アナウンスするのも面倒になってきたし、こんな書き込み、無駄なだけで
                      鬱陶しいと思いますので、今後は特にアナウンス無しという事で、
                      http://www.egroups.co.jp/files/sakura-editor/User/Data/
                      から最新版を取っていってくださいませ。m(_ _)m


                      ・'',q??,qq??,qx?? 文字列について \\ や \' の処理をやってなかったので、やるようにした。
                      ・文字列中の \" の処理は完璧にした。
                      ・``(バッククォート)にも対応した。
                      ・m// , s/// , y/// , tr/// も色分けしてみた。
                      ・他、全体を見直し、無駄な記述を削除、誤りの修正。
                      • [2057] Bregexp.dll すい 2002年06月25日 21:10

                        >>>さらに修正。
                        >>さらに修正。
                        >さらに修正。
                        さらに修正。

                        http://www.egroups.co.jp/files/sakura-editor/User/Data/

                        「アナウンスしない」と言ったのですが、本体動作にからむ問題に気付いたので今回だけ例外という事で。

                        2002/06/25-20時
                          ・ m// , s/// , y/// , tr/// の色分けのせいで split,substr,mkdir,truncate など s,m,tr で
                           始まる強調キーワードが強調表示されなくなってしまっていたので修正。
                           同様に qr,qw,quotemeta など、 q で始まる強調キーワードが強調表示されていなかったので修正。
                           お手軽に「単語の境界 \b 」を使用するようにして修正したのだが、何か動作が変。 (;^^)a
                           正規表現 m/\bqq/k が「Aqq()」にはマッチするが「Bqq()」にはマッチしない。
                           どうも Bregexp.dll V1.1 Build 22 Apr 29 2000 21:13:19 の \b が2バイト文字に対応していない
                           らしく、“2バイト目の文字コードが [A-Za-z_] である全角文字”の直後に [A-Za-z_] が来ている場合、
                           その文字間を単語の境界と見なしてくれないらしい。。。
                           実際のスクリプトでは「Bqq()」とか「5s///」とか「アtr/A-Z/a-z/」とか、、、
                           こんな記述しないだろうから、これは放っておく事にする。
                           ↑は、まぁ良いとして、これってつまり、サクラエディタ本体でも正規表現検索/置換で \b がまともに
                           使えない事では。。。あ、正常に動かん。(笑)(笑)(笑)(笑)(笑)


                        という事で、正規表現検索/置換では \b は正常動作しませんのでご注意。 > 正規表現ユーザー各位
                        これはどうすれば...Bregexp.dll の作者さんに対して報告?
                        Bregexp.dll の仕様だったりして。(汗)