regex encontrar pregunta de contenido




coldfusion (2)

Intentando usar la etiqueta de reexpresión regex para encontrar el contenido entre corchetes en este ejemplo usando coldfusion

 joe smith <[email protected].com>

El texto resultante debe ser

 [email protected].com

Usando esto

<cfset reg = refind(
 "/(?<=\<).*?(?=\>)/s","Joe <joe@domain.com>") />

No teniendo suerte. ¿Alguna sugerencia?

Tal vez un problema de sintaxis, funciona en un probador de expresiones regulares en línea que uso.


Nunca he estado contento con las funciones de coincidencia de expresiones regulares en CF. Por lo tanto, escribí el mío:

<cfscript>
    function reFindNoSuck(string pattern, string data, numeric startPos = 1){
        var sucky = refindNoCase(pattern, data, startPos, true);
        var i = 0;
        var awesome = [];

        if (not isArray(sucky.len) or arrayLen(sucky.len) eq 0){return [];} //handle no match at all
        for(i=1; i<= arrayLen(sucky.len); i++){
            //if there's a match with pos 0 & length 0, that means the mime type was not specified
            if (sucky.len[i] gt 0 && sucky.pos[i] gt 0){
                //don't include the group that matches the entire pattern
                var matchBody = mid( data, sucky.pos[i], sucky.len[i]);
                if (matchBody neq arguments.data){
                    arrayAppend( awesome, matchBody );
                }
            }
        }
        return awesome;
    }
</cfscript>

Aplicado a su problema, aquí está mi ejemplo:

<cfset origString = "joe smith <joesmith@domain.com>" />
<cfset regex = "<([^>]+)>" />
<cfset matches = reFindNoSuck(regex, origString) />

El volcado de la variable "coincidencias" muestra que se trata de una matriz con 2 elementos. El primero será <[email protected]> (porque coincide con la expresión regular completa) y el segundo será [email protected] (porque coincide con el primer grupo definido en la expresión regular; todos los grupos subsiguientes también se capturarán) e incluido en la matriz).


/\<([^>]+)\>$/

algo así, pero no lo probé, ese es tuyo;)





coldfusion