SRC=array.c builtin.c eval.c field.c gawkmisc.c io.c main.c
missing.c msg.c node.c re.c version.c
という文章を「^\w+=.?(\\n.?)*」という正規表現で処理をすると詳説正規表現第三版(173頁)によれば、合致する文字は、「SRC=」だけだそうです。
てっきり、「SRC=」まで合致し終えた後も「a」が.?に合致するかどうか調べるが、控えめなので(\\n.?)で試す。合致しないので「a」が.?合致するかどうか試す。合致するので次は、「r」を試す。というのを行継続記号の「**」が来るまで調べる。
行継続文字の「*」は、(\\n.?)*にマッチし…と思っていたのですが、詳説正規表現の173頁には、
しかし、これも機能しない。控えめな量指定子がオプションのものにマッチするには、それを強制される場合だけだが、この場合は、「=」の後ろのすべてのものがオプションなので、何かにマッチすることを控えめな量指定子に強いるものはないのだ。
控えめな量指定子のサンプルは、'SRC='にマッチするだけであり、それでは答えにならない。
とありました。つまり見当違いだったのですが、なぜ「SRC=」にしかマッチしないのかが良くわかりません。等号より後ろの部分がオプションというのは、正規表現の等号のあとにある三つの*のことを言っているのでしょうか。*は、合っても無くてもマッチするので、「SRC=」にしか合致しないのか、と思ったのです。
なぜ、「SRC=」しか合致しなかったのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。