目次
否定先読み
正規表現の否定先読みは、条件にマッチしないものを検索することができます。
例えば次の検索は、行中に「営業」を含まない行のみを検索することができます。
^(?!.*営業).*$
検索するとこのような結果になります。
行中に「営業」を含まない行のみが検索に引っかかりました。
「^」は行頭、「(?!)」は否定先読みの目印です。
「.*営業」は否定先読みの条件で、この条件を満たさない行のみが、検索に引っかかることになります 「.*$」はなんでもいいから行末まで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という動画教育プラットフォームで動画解説を行っております。
動きを確認しながら丁寧に学習したいという方は、ぜひご覧ください!
コメント