Regex ignora las coincidencias entre las etiquetas <script>

Me disculpo porque tengo muy poco conocimiento sobre Regex y ni siquiera entiendo exactamente lo que está haciendo este regex (no lo escribí,fuente) aparte del hecho de que busca un determinado término para que se pueda resaltar.

Aquí está el Regex:

/(\b$term|$term\b)(?!([^<]+)?>)/iu

El problema es que necesito asegurarme de que no coincida con nada entre<script> y</script> etiquetas Ahora sé que hay muchas variaciones de cómo se puede escribir una etiqueta de script, pero realmente todo lo que necesito hacer es ignorar cualquier texto entre<script y/script> teniendo en cuenta los posibles espacios en blanco entrescript y< me gusta< script o/script >.

¿Alguien puede modificarlo de esta manera? Notificaré al autor del complemento que escribió este registro para incluirlo en futuras versiones.

Editar: Esta es la función de la que se origina:

function relevanssi_highlight_terms($excerpt, $query) {
    $type = get_option("relevanssi_highlight");
    if ("none" == $type) {
        return $excerpt;
    }

    switch ($type) {
        case "mark":                        // thanks to Jeff Byrnes
            $start_emp = "<mark>";
            $end_emp = "</mark>";
            break;
        case "strong":
            $start_emp = "<strong>";
            $end_emp = "</strong>";
            break;
        case "em":
            $start_emp = "<em>";
            $end_emp = "</em>";
            break;
        case "col":
            $col = get_option("relevanssi_txt_col");
            if (!$col) $col = "#ff0000";
            $start_emp = "<span style='color: $col'>";
            $end_emp = "</span>";
            break;
        case "bgcol":
            $col = get_option("relevanssi_bg_col");
            if (!$col) $col = "#ff0000";
            $start_emp = "<span style='background-color: $col'>";
            $end_emp = "</span>";
            break;
        case "css":
            $css = get_option("relevanssi_css");
            if (!$css) $css = "color: #ff0000";
            $start_emp = "<span style='$css'>";
            $end_emp = "</span>";
            break;
        case "class":
            $css = get_option("relevanssi_class");
            if (!$css) $css = "relevanssi-query-term";
            $start_emp = "<span class='$css'>";
            $end_emp = "</span>";
            break;
        default:
            return $excerpt;
    }

    $start_emp_token = "*[/";
    $end_emp_token = "\]*";

    if ( function_exists('mb_internal_encoding') )
        mb_internal_encoding("UTF-8");

    $terms = array_keys(relevanssi_tokenize($query, $remove_stopwords = true));

    $phrases = relevanssi_extract_phrases(stripslashes($query));

    $non_phrase_terms = array();
    foreach ($phrases as $phrase) {
        $phrase_terms = array_keys(relevanssi_tokenize($phrase, false));
        foreach ($terms as $term) {
            if (!in_array($term, $phrase_terms)) {
                $non_phrase_terms[] = $term;
            }
        }
        $terms = $non_phrase_terms;
        $terms[] = $phrase;
    }

    usort($terms, 'relevanssi_strlen_sort');

    get_option('relevanssi_word_boundaries', 'on') == 'on' ? $word_boundaries = true : $word_boundaries = false;
    foreach ($terms as $term) {
        $pr_term = preg_quote($term, '/');
        if ($word_boundaries) {
            $excerpt = preg_replace("/(\b$pr_term|$pr_term\b)(?!([^<]+)?>)/iu", $start_emp_token . '\\1' . $end_emp_token, $excerpt);
        }
        else {
            $excerpt = preg_replace("/($pr_term)(?!([^<]+)?>)/iu", $start_emp_token . '\\1' . $end_emp_token, $excerpt);
        }
        // thanks to http://pureform.wordpress.com/2008/01/04/matching-a-word-characters-outside-of-html-tags/
    }

    $excerpt = relevanssi_remove_nested_highlights($excerpt, $start_emp_token, $end_emp_token);

    $excerpt = str_replace($start_emp_token, $start_emp, $excerpt);
    $excerpt = str_replace($end_emp_token, $end_emp, $excerpt);
    $excerpt = str_replace($end_emp . $start_emp, "", $excerpt);
    if (function_exists('mb_ereg_replace')) {
        $pattern = $end_emp . '\s*' . $start_emp;
        $excerpt = mb_ereg_replace($pattern, " ", $excerpt);
    }

    return $excerpt;
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta