Home >Backend Development >PHP Tutorial >php正则匹配的问题!

php正则匹配的问题!

WBOY
WBOYOriginal
2016-06-23 14:28:301044browse

$str = the theory
my myselef
your yourselef
STR;
$reg = '/^([a-zA-Z]+)\s*\1[a-zA-Z]*$/m';
preg_match_all($reg, $str, $result);
var_dump($result);
?>
下面是匹配的结果,我不太明白,为什么只有最后一个被匹配到了?
array(2) { [0]=> array(1) { [0]=> string(14) "your yourselef" } [1]=> array(1) { [0]=> string(4) "your" } } 


回复讨论(解决方案)

$str =<<<STRthe theorymy myselefyour yourselefSTR;$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

把你的目标字符串改一下,再仔细考虑一下吧:

$str = "the theory\nmy myselef\nyour yourselef";

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

那最后一行  $str = the theory
my myselef
your yourselef
STR;  是否也存在换行的问题,是否也存在/r/n呢?我不太明白

$str =<<<STRthe theorymy myselefyour yourselefSTR;

数据的最后一行后面没有换行
$str =<<<STRthe theorymy myselefyour yourselefSTR;
数据的最后一行后面有换行

多谢版主!受教了!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn