php预匹配函数第三个参数
我正在阅读preg_match函数的在线手册,并编写了一段代码来测试它。同时,我还使用php预匹配函数第三个参数,php,regex,preg-match,Php,Regex,Preg Match,我正在阅读preg_match函数的在线手册,并编写了一段代码来测试它。同时,我还使用preg\u grep编写了另一段代码 代码如下: $subject = array("Robert"); $subject2 = "Robert"; $pattern = "/./"; $result = preg_grep($pattern, $subject); $result2 = preg_match($pattern, $subject2, $matches); echo "<pre>
preg\u grep
编写了另一段代码
代码如下:
$subject = array("Robert");
$subject2 = "Robert";
$pattern = "/./";
$result = preg_grep($pattern, $subject);
$result2 = preg_match($pattern, $subject2, $matches);
echo "<pre>";
print_r($result);
print_r($matches);
echo "</pre>";
$subject=array(“Robert”);
$subject2=“罗伯特”;
$pattern=“/。/”;
$result=preg_grep($pattern,$subject);
$result2=preg_match($pattern,$subject2,$matches);
回声“;
打印(结果);
打印(匹配项);
回声“;
对于preg_grep
我得到了我所期望的,一个值为“Robert”的数组元素[0],这是有意义的
对于preg_match
我得到了一个意想不到的结果,至少就我对regexp的理解而言。它是一个值为“R”的数组元素[0]
这是为什么?
匹配除新行以外的任何字符。因此它将返回第一个字符,因为+
不存在。
匹配除新行以外的任何字符。因此它将返回第一个字符,因为+
不存在。因为/./
表示一个字符,而不是全部字符。你应该使用量词:
表示0个或更多字符*
表示一个或多个字符+
表示0或1个字符?
?
后缀,则表示不匹配(这意味着它尝试匹配尽可能少的字符,而不是尽可能多的字符)
一个完整的结果:
输入字符串:“Robert”
正则表达式结果
===== ======
/*罗伯特
/.*?/null
/罗伯特
/.+?/R
/.?/R
/.??/null
因为/./
表示一个字符,而不是全部。你应该使用量词:
*
表示0个或更多字符
+
表示一个或多个字符
?
表示0或1个字符
如果在量词后面加上?
后缀,则表示不匹配(这意味着它尝试匹配尽可能少的字符,而不是尽可能多的字符)
一个完整的结果:
输入字符串:“Robert”
正则表达式结果
===== ======
/*罗伯特
/.*?/null
/罗伯特
/.+?/R
/.?/R
/.??/null