Foros del Web » Programación para mayores de 30 ;) » RegExp »

regexp coincidir ciertas palablras pero no las que empiezan por

Estas en el tema de regexp coincidir ciertas palablras pero no las que empiezan por en el foro de RegExp en Foros del Web. Hola, con esta expresion Código: "/[^\-\(\)\,\s]+/" he conseguido sacar los valores que me interesa de esta cadena: Código: "algo delante radial-gradient(>45 >45, circle cover, #fff, ...
  #1 (permalink)  
Antiguo 10/03/2016, 19:35
 
Fecha de Ingreso: mayo-2013
Mensajes: 191
Antigüedad: 10 años, 11 meses
Puntos: 10
regexp coincidir ciertas palablras pero no las que empiezan por

Hola,

con esta expresion
Código:
"/[^\-\(\)\,\s]+/"
he conseguido sacar los valores que me interesa de esta cadena:
Código:
"algo delante radial-gradient(>45 >45, circle cover, #fff, #75d1ff) linear-gradient(to bottom, #cedce7 25%,#596a72 75%) algo detras"
elresultado (con preg_match_all en php ) es este;
Código:
   [0] => algo
    [1] => delante
    [2] => radial
    [3] => gradient
    [4] => >45
    [5] => >45
    [6] => circle
    [7] => cover
    [8] => #fff
    [9] => #75d1ff
    [10] => linear
    [11] => gradient
    [12] => to
    [13] => bottom
    [14] => #cedce7
    [15] => 25%
    [16] => #596a72
    [17] => 75%
    [18] => algo
    [19] => detras

Es decir todas las palabras que no tengan delante - ( ) , y espacio
Ahora lo que quieria es si puedo negar de alguna forma las que empiezen por > o por #.
resultado deseado seria este:
Código:
   [0] => algo
    [1] => delante
    [2] => radial
    [3] => gradient

    [6] => circle
    [7] => cover


    [10] => linear
    [11] => gradient
    [12] => to
    [13] => bottom

    [15] => 25%

    [17] => 75%
    [18] => algo
    [19] => detras
O bien algun modo generico de encontrar ciertas cosas pero no las que empiezan por algo




Gracias
  #2 (permalink)  
Antiguo 11/03/2016, 12:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: regexp coincidir ciertas palablras pero no las que empiezan por

¿Exactamente qué valores quieres capturar?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/03/2016, 18:15
 
Fecha de Ingreso: mayo-2013
Mensajes: 191
Antigüedad: 10 años, 11 meses
Puntos: 10
Respuesta: regexp coincidir ciertas palablras pero no las que empiezan por

Cita:
¿Exactamente qué valores quieres capturar?
Serian estos.
Código:
   [0] => algo
    [1] => delante
    [2] => radial
    [3] => gradient

    [6] => circle
    [7] => cover


    [10] => linear
    [11] => gradient
    [12] => to
    [13] => bottom

    [15] => 25%

    [17] => 75%
    [18] => algo
    [19] => detras


Lo que pasa es que pueden variar o sea a veces hay palabras (solo letras) A-z otras veces dicha palabra puede empezar por letras y terminar por numeros ej Ab100
otras veces seria unicode ej ǦÆ tambien con numeros ǺǺ5 etc.

El regexp que puse al principio me resuelve esto pero no llego a entender como hacer una negacion para algunas por ejemplo que no coincida ninguna palabra que lleva el símbolo # delante . ej: #596a72

algo estilo consultas SQL
Código:
 SELECT tal_palabra NOT #esta_palabra
Mas claro ... lo que me interesa es cual es la negacion no de solo un caracter sino de una palabra entera o parte de ella
en regexp .. algo como:
Cita:
/esta_palabra_si[^esta_palabraNO]/
Saludos y gracias por su tiempo
  #4 (permalink)  
Antiguo 11/03/2016, 18:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: regexp coincidir ciertas palablras pero no las que empiezan por

Puedes negar expresiones con (?!esto_no_se_captura), la sintaxis [^esto_no] no es válida para expresiones completas: sólo para listas de caracteres.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 11/03/2016, 19:23
 
Fecha de Ingreso: mayo-2013
Mensajes: 191
Antigüedad: 10 años, 11 meses
Puntos: 10
Respuesta: regexp coincidir ciertas palablras pero no las que empiezan por

todavia no funciona. No se que hago mal pero no me sale !

He puesto otro ejemplo mas corto y simple:
Código PHP:
Ver original
  1. $cadena = "por_capturar1 #no_capturar capturar2";
  2.  
  3. //he intentado:
  4.  
  5. preg_match_all("/(?!#no_capturar)/",$cadena,$coincidencias);
  6. print_r($coincidencias); //este devuelve un arrray muy largo con todas la rubricas vacias
  7.  
  8. preg_match_all("/(?!\#no_capturar)\w+/",$cadena,$coincidencias);
  9. print_r($coincidencias); //devuelve las tres palabras no dos:
  10.  
  11. preg_match_all("/\w+(?!\#no_capturar)/",$cadena,$coincidencias);
  12. print_r($coincidencias); //devuelve las tres palabras no dos:
  13.  
  14. preg_match_all("/(?!\#no_capturar)(\w+)/",$cadena,$coincidencias);
  15. print_r($coincidencias); //devuelve las tres palabras no dos:
  16.  
  17. preg_match_all("/(\w+)(?!\#no_capturar)/",$cadena,$coincidencias);
  18. print_r($coincidencias); //devuelve las tres palabras no dos:

siempre devuelve las tres palabras no dos:

Código:
            [0] => por_capturar1
            [1] => no_capturar
            [2] => capturar2
deseado era
Código:
            [0] => por_capturar1
            [2] => capturar2
Lo que me di cuenta es que solo me niega el primer caracter despues de ?!

Última edición por matake; 11/03/2016 a las 20:12

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:27.