Consider the pattern fragment (a+)* This can match "aaaa "in 33 different ways, and this number increases very rapidly as the string gets longer. (The * repeat can match 0, 1, 2, 3, or 4 times, and for each of those cases other than 0, the + repeats can match different numbers of times.) When the remainder of the pattern is such that the entire match is going to fail, PCRE has in principle to try every possible variation, and this can take an extremely long time.
(?# という並びは、開始を指定します。コメントは、次の右括弧まで 続きます。括弧のネストは許可されません。コメント中の文字は、 パターンマッチングには全く関係しません。 PCRE_EXTENDED オプションが設定されている場合、文字クラスの外 にあるエスケープされていない # 文字は、コメントを指定します。 コメントは、パターン中の次の改行文字まで続きます。