$str =<<<STR
the theory
my myselef
your yourselef
STR;
$reg = '/^([a-zA-Z]+)\s*\1[a-zA-Z]*\s?$/m';
preg_match_all($reg, $str, $result);
print_r($result);Array
(
    [0] => Array
        (
            [0] => the theory
            [1] => my myselef
            [2] => your yourselef
        )    [1] => Array
        (
            [0] => the
            [1] => my
            [2] => your
        ))windows 中,换行是 \r\n

解决方案 »

  1.   

    把你的目标字符串改一下,再仔细考虑一下吧:
    $str = "the theory\nmy myselef\nyour yourselef";
      

  2.   

    +1
    $匹配\n前或字串结尾,/r 也是一个字符,且不在[a-zA-Z]范围,但最后一行是字串结尾,就匹配到了
      

  3.   

    $str =<<<STR
    the theory
    my myselef
    your yourselef
    STR;
    数据的最后一行后面没有换行
    $str =<<<STR
    the theory
    my myselef
    your yourselefSTR;数据的最后一行后面有换行