Hina-Mode

とある呑んだくれエンジニアの気が向いた時に書く戯言

正規表現の先読み、後読みを活用して"○○pt"の文字列を抽出する

泥臭かったのですが、これくらいしか思いつきませんでした。
自分で運営しているサイトでポイント表記があったのすが○○ptの部分を、他の文字に変更したかったのでどれ位変更する必要があったのか調査してみた。

$ find -type f -name '*.ctp' | xargs grep 'pt' | wc -l
1300

oh...無理。無理だよパパン。
しかも中身見たら「empty」とか「option」とか「javascript」とか書いてあるし。アカン。こんなん1300行もチェックしてられません。

というわけでうまい具合に
「○○pt」はチェックしたいけど上記のような特定のパターンは除外できないかと思って調べてみたら
Linux上で先読み、後読みを利用して除外していく方法が見つかりました。

$ find -type f -name '*.ctp' | xargs grep -P '(?<![sS]cri|i|javascri|em|acce|div-g)pt' | grep -P 'pt(?!ion)' | wc -l
35

おお、35行まで絞れた。これならイケる。
中身もすごくそれっぽいのとれた。すげー助かる。


今後はこんな事しないでいいように定数に変えておこう。。。死にたい。