Página 1 de 1

StringRegExp Con variantes Definidas. Ayuda.

Publicado: 17 Mar 2013, 19:37
por dacu
Buenas. Vengo a preguntar lo siguiente.

Me gustaria que en una Misma Expresión regular pudiese optar por poner dos opciones. Lo explicare con un simple codigo.

Código: Seleccionar todo

$HTML_Capturado='<a>Prueba1</a> <a>Prueba2</a> <a>Prueba3</b> <a>Prueba4</k8> <p>Prueba5</a>'

; Si yo Quiero capturar los Pruebas, la única forma que se es la siguiente. 
$Expresion_Regular='<a>(.*?)/<a>

; Pero claro con esto no capturo los otros "Prueba" - A donde quiero llegar es, una forma de expresión regular que me permita decirle
; Mira quiero que me captures lo que este en: 

<a|p>(.*?)</a|b|k8|>

; Es decir Que yo ponga todas las posibilidades que Yo se que me pueden salir. Ni una mas ni una menos. Pero poder indicarlas. Y en caso de que se pueda, Que limite tendria Cuantas variantes puede tener la expresión Regular.

$array = StringRegExp($HTML_Capturado, $Expresion_Regular, 3)

for $i = 0 to UBound($array) - 1
    msgbox(0, "Prueba RegExp con Opción 3 - " & $i, $array[$i])
Next
Creo que Me he explicado Bien. En caso de que no, no dudéis en preguntarme.

Re: StringRegExp Con variantes Definidas. Ayuda.

Publicado: 17 Mar 2013, 22:23
por Chefito
Una forma creo que podría ser esta:

Código: Seleccionar todo

$Expresion_Regular='<(?:a|p)>(.*?)</(?:a|b|k8)>'
Saludos.

Re: StringRegExp Con variantes Definidas. Ayuda.

Publicado: 18 Mar 2013, 01:20
por dacu
Chefito escribió:Una forma creo que podría ser esta:

Código: Seleccionar todo

$Expresion_Regular='<(?:a|p)>(.*?)</(?:a|b|k8)>'
Saludos.

Muchas gracias Chefito, Cuando tengas tiempo me la explicas, Que quiero entenderlo. No entiendo ?: por lo demás esta todo en orden creo.

Re: StringRegExp Con variantes Definidas. Ayuda.

Publicado: 18 Mar 2013, 09:47
por Chefito
Pues simplemente lo que pone la ayuda:
(?: ... ) Non-capturing group. Behaves just like a normal group, but does not record the matching characters in the array nor can the matched text be used for back-referencing.
En resumen, que crea un grupo no capturado. Si no le pones ?: te lo capturaría y te lo mostraría. Es una forma de juntar operaciones y que no se capturen para luego introducirlas en el resultado del array. Por ejemplo, con esto <(?:a|p) le decimos que si encuentra una a o una p después del símbolo <, que siga comprobando la expresión, pero como le hemos puesto ?: antes, no lo captura, no mete esa a o esa p en el array resultante del la función stringregexp. No se si me has entendido. Si no me has entendido simplemente lee esto que te escribo, quita el ?: y mira lo que pasa. Seguro que así lo entiendes bien :smt002 .
Dentro de esto tienes el caso sensitivo (diferencia mayúsculas y minúsculas) con ?-i: , y el caso insensitivo, no las diferencia ?i: . Míralo en la ayuda

Saludos.

Re: StringRegExp Con variantes Definidas. Ayuda.

Publicado: 23 Mar 2013, 12:18
por jamaro
¡Esas ER que siempre sorprenden! Gracias Chefito

Re: StringRegExp Con variantes Definidas. Ayuda.

Publicado: 24 Mar 2013, 03:26
por Chefito
Me extraña que te sorprenda jamaro, ya que tu ya sabes bastante de autoit y de expresiones regulares. Yo no soy precisamente un experto en este tema. Considero que ximorro me da mil vueltas en er. Pero siempre que pueda ayudar algo, y mas en expecial con algunas personas (como tu :-P) aqui estare para lo que pueda deciros.

Saludos.