下記の記事を見かけて、単語境界を表す \b
について、どの正規表現からサポートされているのか気になったので調べてみた。
たった4文字でコード検索の精度がブチあがる正規表現 - Qiita
仕様書
私の記憶はあやふやなので、書籍をあたってみた。
正規表現技術入門 ――最新エンジン実装と理論的背景:書籍案内|技術評論社 P75より
POSIX 正規表現には標準正規表現 (BRE, Basic Regular Expression) と拡張正規表現 (ERE, Extende Regular Expression) の2種類があります。
というわけで、POSIX 正規表現の仕様書をあたってみたが、どれが正当な仕様書なのかはよくわからなかったが、GNU のマニュアルが見つかった。
- posix-basic regular expression syntax (GNU Findutils 4.9.0)
- posix-extended regular expression syntax (GNU Findutils 4.9.0)
このいずれの仕様書においても、\b
は matches a word boundary
と書かれているので、sed, grep でも単語境界は利用できると考えて良さそう。
試してみる
grep
1 | $ echo "PhpStorm is a development tool for PHP" | grep --color -i "\bphp\b" |
マッチした場所が分かりづらいのでスクショ↓
sed
1 | $ echo "PhpStorm is a development tool for PHP" | gsed -e "s/\bPHP\b/Ruby/ig" |
残念ながら、macOS 標準の sed ではサポートされていなかったので、GNU sed を使いました。
まとめ
というわけで、単語境界は BRE からサポートされているので、ほとんどの正規表現エンジンでサポートされていると思われます。割と安心して使える表現ですね!