正規表現で不要な行を削除し、必要な行だけ残す方法

正規表現

目次

否定先読み

正規表現の否定先読みは、条件にマッチしないものを検索することができます。
例えば次の検索は、行中に「営業」を含まない行のみを検索することができます。

^(?!.*営業).*$

検索するとこのような結果になります。
行中に「営業」を含まない行のみが検索に引っかかりました。

「^」は行頭、「(?!)」は否定先読みの目印です。
「.*営業」は否定先読みの条件で、この条件を満たさない行のみが、検索に引っかかることになります 「.*$」はなんでもいいから行末まで0文字以上という意味です。

否定先読みについてはこちらの記事で詳しく解説しています。

条件を満たさない行を置換する方法

正規表現置換を利用して、今検索に引っかかった箇所を空白に置き換えてみます。

「営業」を含まない行が空白に置換されました。
そして、「営業」を含む行のみが残りました。

次のような意味で考えてください。
「営業」を含む行を空白に置換する「営業」を含む行のみを残す

つまり、不要な行を削除することで、必要な行のみを残す置換になります。

しかし、この場合、元の行の改行が残ったままです。

改行を含めて置換する方法

この改行も含めて、削除できるようにしていきましょう。

置換前を次のように修正します。(Windowsの場合)

^(?!.*営業).*$\r\n

末尾に「\r\n」と改行を追記しました。
これを空白に置換します。

「営業」を含む行を、改行ごと空白に置換することができました。
残ったのは、「営業」を含む行のみです。

これにより、「営業」を含む行のみを検索することができました。

Windows以外の改行にも対応する方法

Windowsの場合は標準の改行コードがCRLFなので、「\r\n」を追記しましたが、
Linuxの場合は「\n」、Macの場合は「\r」を追加することで、同じ意味になります。

次のように記述することで、どんな改行コードの場合でも同様のことをすることができます。

^(?!.*営業).*$\r?\n?

まとめ

今回は否定先読みを用いて、不要な行を削除し、
必要な行だけ残す方法についてお伝えしました。

肯定先読みを用いれば、検索したい行だけ検索できるのですが、
このようにして不要な行を削除した方が見やすい場合があります。

正規表現についての別記事についてもご覧ください!

★検索
パスワードの正規表現の考え方
「~を含まない行」を検索する方法
「~を含む行」を検索する方法
「~で終わる」を検索する方法
「~で始まる」を検索する方法
正規表現繰り返しの考え方

最短一致検索を行う方法
否定の文字クラス
「または」検索を行う方法

環境による「\d」の動作の違いについて検証

★置換
正規表現置換の考え方
大文字⇔小文字変換を行う方法
キャメルケース⇔スネークケース変換を行う方法
CSVを囲みなし⇒囲みありに変換する方法

CSVファイルの特定のカンマ以降を削除する方法
CSVファイルの必要な箇所だけ残す方法
数字3ケタおきにカンマを挿入する方法
正規表現置換で不要な行を削除し、必要な行だけ残す方法
数字を0埋めする方法
0埋めされた数字を0埋めなしに変換する方法
ファイル名から、拡張子のみを抽出する方法
Javaで正規表現置換を行う方法

また、Udemyという動画教育プラットフォームで動画解説を行っております。
動きを確認しながら丁寧に学習したいという方は、ぜひご覧ください!

正規表現入門 作業効率アップに役立つ38個の方法

コメント

タイトルとURLをコピーしました