質問: `a 1234 num`という文字列に対し`[0-9]*`という正規表現を合致させようとすると、空白がマッチします。 つまり▲を**正規表現を適用するときの現在位置<カレントステート>**とすると`▲ a 1234 num`です。 aが行頭といえば行頭ですが、その行頭の前に空白があってそれが`[0-9]*`にマッチしています。 この空白は、どうも行末にも存在するそうです。まるで引っ越しの時に使う緩衝剤のように存在する空白ですが、 なぜ行頭の前、行末の後ろに空白が存在するのでしょうか。
回答: 『正規表現 第3版』を参考にするなら、「1.4.6 単語の境界(P14)」が参考になると思います。 正規表現では、文字列が消費されなかった場合(『正規表現 第3版』P57参照)に**文字と文字の境界(位置)**にマッチします。 つまり、`[0-9]*` は「全ての文字の境界」にマッチします。 「消費する/消費しない」の考え方は難しいと思われるかもしれませんが、簡単なコードを書いてみて思考実験と照らし合わせる作業を繰り返す事で見えてくるものはあると思います。 実際にコードを書いて、検証してみる事は大事です。 Re: aaaaaaaa さん