[PHP-users 32425] Re: Simpletest1.0.1betaのassertPatternでの複数行へのマッチ(s修飾子)がうまくいかない

kato @ officeants.net kato @ officeants.net
2007年 7月 11日 (水) 18:34:24 JST


大家さま
ご回答頂きましてありがとうございました。

私もassertPatternの第二引数に対象を入力してみたのですが、期待したように「第
二引数を検索対象」となりませんでした。
SimpletestのAPIを見てみると

■assertPattern (line 1395)
Will trigger a pass if the Perl regex pattern is found in the raw content.
    * return: True if pass.
    * access: public
boolean assertPattern (string $pattern, [string $message = '%s'])
    * string $pattern: Perl regex to look for including the regex
delimiters.
    * string $message: Message to display.

となっており、単に画面にエラーメッセージを表示するだけでその内容をマッチ対象
として使うわけではないようなのです。

ところが、、、
'/正規表現/s'で、
assertPatternはうまく認識しているようです。
つまり、s修飾子は使えるようです。
私の正規表現が間違っておりました。

ご参考までに
  $this->assertPattern('/td(?!.*td).*abc/s'); <=正しくは
'/error(?!.*td).*abc/s'でした
としたのは、errorとabcのの間にtdという文字列がふくまれないようときにテスト成
功としたかったのです。
正しいソースは、
  $this->assertPattern('/error(?:(?!td).)*abc/s');
とするとうまく動作することができました。

正規表現で、
 「文字列tdが含まれない任意の文字列を表現するのは
       (?:(?!td).)*
  である」
ようです。(正規表現辞典 SE出版より)

私の確認不足で、大家さん、ご迷惑お掛けいたしました。

今後とも、どうぞよろしくお願いいたします。
__
加藤
> -----Original Message-----
> From: php-users-bounces @ php.gr.jp [mailto:php-users-bounces @ php.gr.jp]On
> Behalf Of 大家正登
> Sent: Wednesday, July 11, 2007 5:27 PM
> To: PHP-users ML
> Subject: [PHP-users 32423] Re:Simpletest1.0.1betaのassertPatternでの複数
> 行へのマッチ(s修飾子)がうまくいかない
>
>
> はじめまして。大家と申します。
> 初投稿です。
>
> >さて、
> >Simpletest1.0.1betaでテストケースを実施しておりましたところ、下記
> >  $this->assertPattern('/td(?!.*td).*abc/s');
> >s修飾子をつけて、複数行での検索をおこなおうとしていたのですが、
> >マッチしませんでした。
>
> 加藤さんがお知りになりたい事の直接の回答となっておらず
> 恐縮ですが、単に回避するだけでしたら、
>
> $this->assertPattern($pattern, $subject);
>
> を、
>
> $this->assertPattern($pattern, str_replace("\n","",$subject));
> ($pattern からs修飾は除く)
>
> のようにすれば動作するような気がしますがいかがですか?
> 目的の遂行ではなく、知的なご興味からの質問でしたら
> 答えになっておらずすみません。
> もしお急ぎだったらと思いましたので。
>
> -- 大家
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
>




PHP-users メーリングリストの案内