正则表达式另一行

Regex another line

你好,我正在学习正则表达式,我想知道为什么:

此代码:

<?PHP
$str = '<TD class=""><option value="123">abc</option>
</TD>
        <TD class=""><option value="123">abcwda</option>
        </TD>';

preg_match_all('#<TD([\S\s]+)</TD>#s', $str, $tabela);
?>

Return:

Array
(
    [0] =>  class=""><option value="123">abc</option>
</TD>
        <TD class=""><option value="123">abcwda</option>

)

为什么不呢return:

Array
(
    [0] =>  class=""><option value="123">abc</option>
    [1] =>  class=""><option value="123">abcwda</option>

)

?

因为greedy +. Use its lazy对口(+?):

preg_match_all('#<TD(.+?)</TD>#s', $str, $tabela);

另请注意,由于您使用的是 /s 修饰符,因此 . 将匹配换行符,因此您不需要 [\S\s] 结构。