秀丸とPHPの正規表現の違いについて - PHPプロ!Q&A掲示板
- $file = file("Log.txt");
- foreach($file as $line){
- if(preg_match('/(?<=^\x20{0,3}[0-9]{1,5}:Thread\x2d[0-9]{1,3}\x20{0,6}:XXXX:\x5bDEBUG\x5d Output_ \x3d )[0-9]{1,3}/', $line, $array)){
- echo $array[0];
- }
上記のプログラム(抜粋)でログファイル内の特定の文字列(値)を検索し、ログファイルにはかれた設定値
を表示したいと考えていますが、このプログラムでは下記のエラーが発生してしまいます。
Warning: preg_match() [function.preg-match]: Compilation failed: lookbehind assertion is not fixed length at offset 90 in
C:\xampp\htdocs\XXXXX.php on line 18
line 18はif(preg_match(~ の行です。
エラー内容について検索、和訳してみましたが
意味がよくわかりませんでした。
ちなみに事前に秀丸で上記の正規表現を使用して検索をかけると
期待した文字列がヒットし正常に動作しています。
そこでお聞きしたいのですが、秀丸とPHPの正規表現に違いが存在しますでしょうか?
また上記プログラムに問題があれば教えて頂けないでしょうか。
この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。





ページのトップへ


kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。