PHP:正则表达式中的条件子模式?

PHP:正则表达式中的条件子模式?,php,conditional,Php,Conditional,我在PHP中尝试过: <?php $greets1="hello jack"; $greets2="hi john"; preg_match('/(hello)(?(1).*)/',$greets1,$result); ?> 我希望数组$result包含hello和jack,但它只捕获hello。为什么?模式是正确的,但它没有捕获比赛的第二部分。尝试: /(hello)((?(1).*))/ 您需要捕获hi/hello和姓名?可能是/(hello | hi)\s+(\w+

我在PHP中尝试过:

<?php
 $greets1="hello jack"; $greets2="hi john";
 preg_match('/(hello)(?(1).*)/',$greets1,$result);
?>


我希望数组
$result
包含
hello
jack
,但它只捕获
hello
。为什么?

模式是正确的,但它没有捕获比赛的第二部分。尝试:

/(hello)((?(1).*))/

您需要捕获hi/hello和姓名?可能是
/(hello | hi)\s+(\w+)/
合适吗?
(?(1)。*)
应该做什么?试试
(.*)
@AlmaDoMundo我试着用条件子模式,不过@JoAreBy我试着用条件子模式subpatterns@user176795那么你使用了错误的语法。正确的是
(?(条件)是模式|否模式)
,但我看不出它与您的样本有什么关系。