简单测试的正则表达式在 php 中不起作用

Simple tested regex not working in php

这是我测试过的 regex:

(?:.*?- )(?<param_0>.*?)( Tu interés| Your main interest)(?:.*?- )(?<param_1>.*?) \)

使用此输入字符串:

Array ( [0] => Si es estudiante de intercambio, elija su país de origen: - No soy un estudiante de intercambio Tu interés en nuestra oferta de titulaciones se centra en los estudios de: - grado ) 

这是我的代码:

$message = 'Si es estudiante de intercambio, elija su país de origen: - No soy un estudiante de intercambio Tu interés en nuestra oferta de titulaciones se centra en los estudios de: - grado ';
$regex = "/(?:.*?- )(?<param_0>.*?)( Tu inter| Your main interest)(?:.*?- )(?<param_1>.*?) \)/";

if (preg_match_all($regex, $message, $matches)) {
    $param_0 = matches[0];
    $param_1 = matches[1];
    echo 'Param 0: ';
    echo $param_0;
    echo '<br>Param 1: ';
    echo $param_1;
    echo '<br>';
} else {
    echo 'no match';
}

我猜这是一些愚蠢的错误,但几乎没用过php,我找不到问题所在。

至于正则表达式部分,您可以使用代码生成器部分。你必须转义一些符号,看看它应该如何完成(见最后的\)/):

$re = "/(?:.*?- )(?<param_0>.*?)( Tu interés| Your main interest)(?:.*?- )(?<param_1>.*?) \)/"; 

你有:

$regex = "/(?:.*?- )(?<param_0>.*?)( Tu inter| Your main interest)(?:.*?- )(?<param_1>.*?) \)/";