電子書籍の厳選無料作品が豊富!

Devasというフォルダ内の複数のファイルを正規表現の置き換えができるソフトを使って、フォルダ内の複数のファイルの末尾の行の初めの文字が特定の文字(この場合は<)以外のファイルを探しだしたいのですが、
正規表現で\z^[^<]としても出てきません。

秀丸などでファイルを見ると、ファイルの末尾が
-----------------------
<br>
[EOF]
-----------------------
となっているファイルは無視し、<以外の文字のファイル、例えば、
-----------------------
(あいうえお)
[EOF]
-----------------------
などとなっているファイルを探し出したいのです、
[EOF]の部分がファイルの末尾になるから上の正規表現では出来ないのでしょうか?だとすればどのようにすればよいのでしょうか?

A 回答 (3件)

最終行が空行(改行のみ)の場合の扱いが不明ですが、


・空行は無視して直前の行頭の文字が"<"以外ということなら
^[^<\n][^\n]*\n*?\z
・最終行が空行ならば最終行の先頭は"<"以外であると判断するなら
^([^<\n][^\n]*|\n)\n?\z

いまひとつ複数行と改行絡みの正規表現は理解できてませんので無理矢理といった感じですが取りあえずご参考までに。
    • good
    • 0

少し、sed をかじった程度で


Devas の正規表現をちょっと見て
http://gimite.net/help/devas-ja/all_regex.html

\z^[^<]
[EOF] の後に 文字は無いでしょう。
// それでも検索するみたいだが
簡単に
[^>]\n\z
で良いみたいですが

下記の様な場合を含めて
どうするかは、自分で少し考えて下さい。
<br>[EOF]
    • good
    • 0

ちょっとよく分かりませんが、正規表現の文法を勘違いしていらっしゃると思います。

そもそも\zというメタ文字は存在しません(\Z = $ の勘違い?)。
そのソフトウェアに明るくないので「行単位のマッチ」を行うのか「ファイル単位のマッチ」を行うのか、2BYTE文字をどう扱っているのか、マッチしなかった場合だけ表示ということが行えるのかとかいろいろ分かりませんので、正規表現の説明とソフトのマニュアルをもう一度確認してみてはいかがでしょうか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!