◀一般トップへ
  • 7484 色分けについて
    • 7512 Re:色分けについて
  • [7484] 色分けについて 名無し 2012年03月18日 17:38

    サクラエディタを使わせて頂いている者です。

    00101101011100101

    ↑のような文字列で1だけ強調表示にはできませんでしょうか。
    • [7512] Re:色分けについて あかま 2012年05月31日 12:16

      方法は3つあります
      ・キーワードとして1を登録する
      →共通設定からキーワードを編集or追加して、タイプ別設定のカラータブにてそのキーワードの利用設定と強調方法を指定する
      ・検索による強調表示で済ます
      ・正規表現キーワードとして1またはパターンを登録する
      →タイプ別設定の正規表現キーワードタブにて検索パターンを追加し、タイプ別設定のカラータブにて強調方法を指定する

      キーワードとして登録する場合は全ての「1」が強調されてしまいます。
      正規表現の場合は先読みや戻り読みを利用することで前後の文脈から強調すべき部分を限定できます。
      ただし、導入している正規表現エンジンによっては先読みや戻り読みが利用できない場合や、戻り読みで可変長パターンが利用できない場合があります。
      例えば、鬼車では戻り読みで可変長パターンが利用できません。サクラエディタで利用可能な、可変長戻り読みが出来る正規表現エンジンがあるかどうかは知りません。

      0~1のみの文字で構成され前後に2~9の文字が存在しない文字列から1のみを強調する場合の検索パターンは、可変長戻り読みが可能ならば「(?<=^[01]*|[^0-9][01]*)1(?=[01]*[^0-9])」となるかと思います。
      可変長戻り読みが出来ない場合は、戻り読みの長さを全パターン手動展開するなどしてください。
      例えば、二進部分の戻り読み長を4桁に制限した場合の検索パターンは「(?<=^|^[01]|^[01]{2}|^[01]{3}|^[01]{4}|
      [^0-9]|[^0-9][01]|[^0-9][01]{2}|[^0-9][0
      1]{3}|[^0-9][01]{4}|[01]{5})1(?=[01]*[^0
      -9])」となります。
      この場合、「9111111」は「0~1のみの文字で構成され前後に2~9の文字が存在しない文字列」に該当しませんがこの文字列の7文字目以降(最後の1)は強調される事になります。

      正規表現の解説:
      (?<= ←検索対象から戻り読みすると
      ^ ← 行の先頭から始まり
      [01]* ← 「0」と「1」のみが続くパターン
      | ←または
      [^0-9] ← 数値以外の文字から始まり
      [01]* ← 「0」と「1」のみが続くパターン
      ) ←になっていて、かつ検索対象は
      1 ← 「1」というパターンにマッチして
      (?= ←さらに、検索対象から先読みすると
      [01]* ← 「0」と「1」のみが続くパターンが続き
      [^0-9] ← 数値以外の文字(改行文字を含む)が出現する
      ) ←部分にマッチする
      正規表現の解説:
      (?<= ←戻り読みの開始
      ^ ←行の先頭から二進数が続く場合の1文字目の1にマッチさせる為の戻り読み
      | ←または
      ^[01] ←行の先頭から二進数が続く場合の2文字目の1にマッチさせる為の戻り読み
      ~中略~
      [^0-9][01]{4} ←文章に続いて書かれた二進数の5文字目の1にマッチさせる為の戻り読み
      | ←または
      [01]{5} ←二進数が6桁以上ある場合に備えて5文字以上二進数が続いた後の1にマッチさせる為の戻り読み
      ) ←戻り読みの終了
      以下略