无法理解后半段话

举例:
$str="public function myFn (a, b){//...}";
preg_match('/function\s+([^\s(]*)/',$str,$m);
var_dump($m);
// 输出
array(2) {
[0]=>
string(13) "function myFn"
[1]=>
string(4) "myFn"
}
对着文档,看着例子,还是无法理解,myFn是怎么出来的。正则本身就是来找function xxx这样的字符串的,为什么就把myFn找出来了?
总结:一直以为()是函数后面的(),这里的()是正则里面的捕获符号,preg_match显示完整匹配,然后还会显示每个捕获的内容,大致是这样
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这是正则语法的捕获组的概念,建议可以看一下正则的语法中关于捕获组的概念,这个在PHP和JS中都是一样的,这是正则的特性
有图有真相

以下是老答案:
教你一个简单的理解,在正则中一律用 () 括号括起来的,都是匹配结果的输出,你的正则中,function是直接写在正则中的,所以$matches[1]中不会出现function,而$matches[0]是正则匹配结果的全部文本
不想匹配出函数名,把正则表达式里的圆括号
()去掉就好,()表示子模式(也叫子组).正则匹配的时候会去找小括号,一个小括号为一组,数组顺序是小括号从左到右出现的顺序。
(.?(.?))