◀一般トップへ
  • 8239 正規表現の戻り読みができません
    • 8240 Re:正規表現の戻り読みができません
      • 8241 Re2:正規表現の戻り読みができません
  • [8239] 正規表現の戻り読みができません セイロン 2017年04月28日 04:43

    はじめまして。
    正規表現にバグを見つけたかもしれません。
    以下の正規表現を「行の頭にはない//」という意図で検索してみました。

    (?<!\r\n)//

    ですが、検索結果に行の頭にある//ばかりでした。
    不思議だなと思って「!」を削除してみたら、以下のエラーが出ました。

    invalid char in group name <\r\n>

    どうやら「(?<」を名前付き捕獲式集合と勘違いしているようです。
    こちらで構文を間違っているのでしょうか。
    でなければ、修正して頂けないでしょうか。
    どうぞよろしくお願いします。
    • [8240] Re:正規表現の戻り読みができません ds14050 2017年04月29日 00:55

      ▼ セイロンさん

      サクラエディタはテキストデータを1行ごとに別々に持っているため、
      検索も1行ごとに行っています。そのため、ある行の頭より前に前の
      行の改行があるわけではないのです。正規表現には ^ というテキスト
      全体の頭や行の頭を意味する特殊記号がありますので、こちらを使って
      ください。こうです (?<!^)// あるいはまたこう (?<=.)//

      >「(?<」を名前付き捕獲式集合と勘違いしているようです。

      正規表現ライブラリになったつもりで考えると、(?< の次に = が来たら
      戻り読み、! が来たら否定の戻り読み、それ以外なら名前付き捕獲式集合
      のはずなんだけど、\r\n というのは有効な名前ではない、ってところ
      でしょうね。
      • [8241] Re2:正規表現の戻り読みができません セイロン 2017年04月29日 04:21

        ▼ ds14050さん
        回答してくれてありがとうございます。
        とても参考になりました。
        行を別々に扱っていたのですね。
        お勧めの正規表現で検索できました。
        ありがとうございました。