我正在玩一些角色:
Patern Subject Status
'/#*/' "\x00" Match
'/#*/' "" Match
'//' "\x00" Match
'//' "" Match
'//' "whatever" Match
'/\x00/' "whatever" Fail
'/\x00/' "" Fail
我意识到默认情况下PHP字符串没有NUL字符(\ x00)
那么空模式'//'
表示匹配所有PHP字符串是什么?
如果我们看到最后一个模式,那就是
'/\x00/' "" Fail
它表明空图案不是NUL字符。
我知道这是一个愚蠢的问题。 但这种好奇心让我问起。
答案 0 :(得分:3)
模式给出字符串的要求,如果满足要求,则字符串匹配。空模式没有要求,因此所有字符串都满足其所有要求。
此外,如果您询问模式匹配的位置,则空模式将匹配所有可能的位置。每个匹配的长度为0.来自perl的一个例子(因为你问的是perl兼容的regexp):
$x = "ab";
$x =~ s//./g; # this is search-replace in perl, replace all occurrences of // with .
say $x;
将打印.a.b.
作为在所有可能位置(a之间,a和b之间以及b之后)匹配的模式,但不替换任何字符(因为匹配长度为0)。
答案 1 :(得分:0)
PHP字符串不像C字符串那样工作。空字符(\x00
)不用于终止,因此它们可以像字符串中的任何其他字符一样存在。