[PHP-doc 381] wantfix:PCRE正規表現の言明に関する説明

Mizar mizar @ big.jp
2005年 3月 1日 (火) 13:47:36 JST


初めまして、Mizarです。PHPマニュアルの日本語訳に、
不適切と思われる部分がありましたので報告致します。

http://jp.php.net/manual/ja/pcre.pattern.syntax.php#regexp.reference.assertions
にて、以下のように解説されている部分があります。
>  (?!foo)bar
> 
> は、"foo" 以外のものが前にある "bar" の存在を見つけられません。
> 次の3文字が "bar" である場合に、(?!foo) は常に TRUE となるため
> に、このパターンは、"bar" の存在を見つけることができないのです。

(?!foo)bar は "foobar" に対しても "fuubar" に対しても真でありますし、
「"bar" の存在を見つけることができない」わけではないと思われます。

http://jp.php.net/manual/en/reference.pcre.pattern.syntax.php#regexp.reference.assertions
> Note that the apparently similar pattern (?!foo)bar does not find
> an occurrence of "bar" that is preceded by something other than "foo";
> it finds any occurrence of "bar" whatsoever, because the assertion
> (?!foo) is always TRUE  when the next three characters are "bar".

を読むと、以下の試訳のような事が述べられているように読み取れ、またその
方がより正しく思われます。
(但し、「見かけは似ているパターンに注意して下さい。」の部分を含めての
試訳ですので、このままですと多少前後の繋がりをいじる必要があります。)

>  (?!foo)bar
> 
> 一見、良く似たこのパターンが "foo" 以外のものの後にある "bar" を
> 見つけるものではないことに注目してください。これはどこにある "bar"
> でも見つけてきてしまいます、それは、次の3文字が "bar" である場合、
> (?!foo) は常に TRUE となってしまうからです。

これを参考に、該当部分における日本語訳の修正をお願いします。

--------
Mizar at IRC




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