質問: 下記の正規表現は、aritaを消費します。 s/\barita\b/imari/ 次は、消費しません。 `s/(?=\barita\b/imari/` ここで質問ですが、正規表現における消費とは、具体的に説明するとどういうものなのでしょうか。 上記の正規表現を見る限りだと消費というのは、マッチした文字列を置き換える置換のことを言っているのでしょうか。 この**消費**という言葉は、**詳説 正規表現 第3版**の57p右下部や、61p右上部で見かけ疑問に思い質問いたしました。 57pでは、先読み後読みの重要な部分を説明しているところです。 > > 先後読みで重要なことは、部分式がマッチするかどうかを実際にチェックするにもかかわらず、テキストを"消費"しないことである。これは少しわかりにくいかもしれないので、例を使って説明しよう。 > > > 61p右上部では、正規表現を使って「Jeff's」という文字が大文字或いは、小文字であってもそれらの違いを残したうえで置換を行うときに、いくつか例を提示し、この先述の条件が上手く動作する正規表現は、どれなのかを選ぶ趣旨の項目にて**消費**という言葉が記述してありました。少々長い文章なので引用は、割愛します。 グーグルブックで見本が無いか調べたところ残念なことに第二版の見本しかありませんでした。 面白いことに、そこでは**消費**ではなく**飲み込む**と書かれていました。
回答: aritaを検索値に含むかどうかを指しているものと思います。 `s/\barita\b/imari/` で検索にヒットした場合、その対象文字列にはaritaも含まれますが、 先読みを使った `s/(?=\barita\b/imari/` での検索の場合、aritaに続く文字列のみがヒットすることになります。 置換で考えると、検索値に含まれているので一緒に上書きされる(=消費されて消える)と考えれば直観的かもしれません。