0

私は現在、PHP の空の文字列で一致を取得しようとしています。この現在のランスルーは一致notして空である必要がありますが、何らかの理由''で一致するようにしか見えませんか? not誰かが私が間違っていることを教えてもらえますか?

preg_match('/^\bnot|$/', 'not', $matches);
print_r($matches);  // array(0 => 'not') // correct

preg_match('/^\bnot|$/', '', $matches);
print_r($matches);  // array(0 => '') // maybe right ?

preg_match('/^\bnot|$/', 'foo', $matches);
print_r($matches);  // array(0 => '') // deff messed up
4

2 に答える 2

1

これは、空の文字列を誤って照合しようとしているためです。あなたの正規表現はそうあるべきです。

^$|pattern

そして\b(単語境界) で、これは\w(単語文字) から a \W(非単語文字) に一致します。実際にはゼロ幅の一致 (空の文字列) ですが、単語境界の特定の場所にある文字列のみに一致します

于 2013-09-11T00:45:14.693 に答える