PHP Regex在使用或时返回空值


PHP Regex Returning Blank Value when Using Or

当OR语句中的第二个值匹配时,我的regex返回一个空值,如果找到第二个,我希望它忽略第一个匹配

preg_match('/>'s+(?:<input type="submit" value="(.*?)" '/>|<p class="no">(.*?)<'/p>)'s+<'/form>/', $string, $matches);

如果第一项匹配:

Array
(
    [0] => <input type="submit" value="Go" />
    [1] => Go
)

如果第二项匹配:

Array
(
    [0] => <p class="no">Value</p>
    [1] => 
    [2] => Value
)

如何让它返回[1]中的第二个项值而不是[2]中的值?

不使用(?:来启动选项,而是使用(?|[docs]