这个多线PCRE捕获有什么问题?

时间:2012-04-02 14:27:23

标签: php regex pcre

PHP:

$x = preg_match (
    '/^([.\\n\\r]*)\\n\\n/m',
    "a\nb\nc\n\nd\ne\nf",
    $m);

print "x=$x, m=";
print_r ($m);

此输出

x=0, m=Array (
)

我期待

x=1, m=Array (
        [0] => a
    b
    c

    d
    e
    f
        [1] => a
    b
    c
)

我正在使用/m修饰符。当捕获的字符串不包含新行时,变体会对此起作用。为什么它不能正常工作?

1 个答案:

答案 0 :(得分:0)

尝试:

$x = preg_match (
    '/^(.*)\n\n.*/sm',
    "a\nb\nc\n\nd\ne\nf",
    $m);

print "x=$x, m=";
print_r ($m);

你不需要所有逃脱加上你可以使用s修饰符来制作。匹配换行符。

以上输出你所期待的,无论它是否解决了你更广泛的问题,当然是另一回事 - 这是我对你想要做的最好的猜测。