gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

正規表現の「明日はどっちだ!」

えと…まだ検証とか全然仕切れていないのですが。
とりあえずわかってるのは
・元になるファイルは54315バイト程度
・第一の正規表現「preg_match("/(.*?)[\$]{3}([0-9a-zA-Z_-]*)[:]{0,1}(.*?)[\$]{3}(.*)/s", $ret, $wk)」で37回ほどぶんまわす
・第二の正規表現「preg_match("/(.*)\*\*\*([0-9a-zA-Z_-]*):{0,1}(.*?)\*\*\*(.*)/s", $ret, $wk)」で519回以上、ほどぶんまわす
状態で…「途中でなんかうまく動かなくなりました」orz
具体的には「本来引っかかるはずの正規表現(return 1)が引っかからない(return 0)」状態になります。
元ファイルの文字数をやりくりすると、増減させた文字数に正確に沿うように「引っかからなくなる場所」が移動するので、多分「どこかに閾値があるのだろう」と予想はされます。


もうちょい具体的に書きますと。
後方一致で置換をかけているのですが、途中から「置換してくれなく」なります orz
で、その「置換してくれない境目」が、ファイルの全体のバイト数を増減させると、おおむねそれにきれいに沿うように動いてくれます。


…すみません面倒なんで細かい検証はしてません orz


とりあえず「ああそんな話もあるんだなぁ」程度に生ぬるく見ていただけると嬉しいです。
………だから正規表現ライブラリ嫌いだ orz