◀一般トップへ
  • 4112 メールのレスを色分け
    • 4113 Re:メールのレスを色分け
    • 4115 RE: メールのレスを色分け
      • 4120 Re2: メールのレスを色分け
  • [4112] メールのレスを色分け maru 2004年10月21日 13:16

    メールのレス部分を色分けするため
    正規表現キーワードを使おうと思っています。
    ところが、レスのレスなど、">"が他段になるときに

    ">>"とするメールソフトと
    "> >"とするメールソフトがありますよね。

    キーワード1:/^>\s?[^>].*/k
    キーワード2:/^>\s?>\s?[^>].*/k
    キーワード3:(以下省略)

    とやってみたのですが、"> >"が">"と同じ色に
    なってしまいます。
    どうやたら良いのでしょう?どなたかご教示願います。
    • [4113] Re:メールのレスを色分け じゅうじ 2004年10月21日 13:31

      ▼ maruさん
      こんな感じでしょうか。
      // 正規表現キーワード Ver1
      RxKey[000]=RK1,/ ?> ?> ?> ?.*/k
      RxKey[001]=RK2,/ ?> ?> ?.*/k
      RxKey[002]=RK3,/ ?> ?.*/k

      テストデータを以下に示します。
      aaaaaaaaa
      >bbbbbbbbbbbbb
      > ccccccccccccccccc
      >>ddddddddddddddddddd
      >> eeeeeeeeeeeee
      > >fffffffffffffffff
      > > ggggggggggggggggggggg
      >>>hhhhhhhhhhhhhhhhhhhhhhh
      >>> iiiiiiiiiiiiiii
      > > >jjjjjjjjjjjjjjjjj
      > > > kkkkkkkk

      aaaaaaaaa
      >bbbbbbbbbbbbb
      > ccccccccccccccccc
      >>ddddddddddddddddddd
      >> eeeeeeeeeeeee
      > >fffffffffffffffff
      > > ggggggggggggggggggggg
      >>>hhhhhhhhhhhhhhhhhhhhhhh
      >>> iiiiiiiiiiiiiii
      > > >jjjjjjjjjjjjjjjjj
      > > > kkkkkkkk
    • [4115] RE: メールのレスを色分け すい 2004年10月22日 01:20

      もう「どう設定すれば良いのか」という回答は じゅうじさん から付いているので、
      「どうして maruさんの設定で上手く行かないのか」の方を勝手に担当。


      >キーワード1:/^>\s?[^>].*/k
      >キーワード2:/^>\s?>\s?[^>].*/k
      >キーワード3:(以下省略)
      >
      >とやってみたのですが、"> >"が">"と同じ色に
      >なってしまいます。

      まず、正規表現で「キーワード1:/^>\s?[^>].*/k」だと「> >」の行にもマッチしちゃいますよね?

       ^>  行頭の '>'
       \s?  次にスペースが 0個ある
       [^>] で、その次に '>' 以外の文字(スペースがありますね)があって、
       .*  で、その後ろ全部。つまり2個目の '>' から行末まで

      で、「> >」は、先にマッチしたキーワード1の色になるわけです。

      そうならないようにするには、キーワード1とキーワード2の順番を
      入れ替えて設定しておけば良い。
      そうすれば「> >」は、キーワード1にマッチするよりも先に
      キーワード2にマッチするのでキーワード2の色になります。

      キーワード3:/^>\s?>\s?>\s?[^>].*/k
      キーワード2:/^>\s?>\s?[^>].*/k
      キーワード1:/^>\s?[^>].*/k

      の順番に定義する事。

      ただし、これだと
      ・「>>>>」はキーワード3にならない
      ・「>>> >」はキーワード3になる
      とか、なっちゃいますけれど。(キーワード4が無い場合の話です)

      正規表現を [^>] の部分を[^>\s] にすれば良いのかな。
      その場合、(キーワード4が無い場合)「>>>>」は常に
      キーワード1~3いずれにも該当しなくなりますね。


      私なら単純に
      ・キーワード5:/^(\s*[>>]){5}.*/k
      ・キーワード4:/^(\s*[>>]){4}.*/k
      ・キーワード3:/^(\s*[>>]){3}.*/k
      ・キーワード2:/^(\s*[>>]){2}.*/k
      ・キーワード1:/^(\s*[>>]){1}.*/k
      って、やっちゃいますけど。
      # ↑行頭にスペース文字が入る場合もある、というパターンです。
      • [4120] Re2: メールのレスを色分け maru 2004年10月23日 11:38

        じゅうじさん すいさん回答ありがとうございます。

        ▼ すいさん
        >  ^>  行頭の '>'
        >  \s?  次にスペースが 0個ある
        >  [^>] で、その次に '>' 以外の文字(スペースがありますね)があって、
        >  .*  で、その後ろ全部。つまり2個目の '>' から行末まで
        う~ん、なるほど・・・。
        中途半端な知識で使うと落とし穴。
        結構難しいですね。