RegEx

Iniciado por Miseryk, 20 Junio 2018, 20:13 PM

0 Miembros y 1 Visitante están viendo este tema.

Miseryk

Buenas, no sé si ésto vá acá, pero estaba buscando la manera de hacer en Regular Expression lo siguiente:

tengo un código fuente que tiene

Código (cpp) [Seleccionar]

   //cout <<
   cout <<


lo que quiero hacer es que me busque los cout que no están comentados, intenté de muchas maneras pero no puedo hacerlo funcionar :@

alguna idea? sigo probando, gracias!
Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It's never too late to change our luck
So, don't let them steal your light
Don't let them break your stride
There is light on the other side
And you'll see all the raindrops falling behind
Make it out tonight
it's a revolution

CL!!!

Miseryk

Pude lograr algo, pero no todo:

http://www.rubular.com/

regular expression: (?<!\/\/)(cout)

texto de prueba:

Código (cpp) [Seleccionar]

printf ()
cout <<
    cout <<
    //    cout <<
//cout <<
// cout << endl << endl;
// // //cout << "PosY: " << dec << (DWORD)TestPosY << endl << endl;


Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It's never too late to change our luck
So, don't let them steal your light
Don't let them break your stride
There is light on the other side
And you'll see all the raindrops falling behind
Make it out tonight
it's a revolution

CL!!!

Eleкtro

#2
Solo te falta excluir de la captura cualquier caracter a la derecha de los caracteres de comentario, y capturar la palabra completa "cout", es decir:

(?<!\/\/(.+)?)\bcout\b

PD: para la próxima vez: Hilo oficial: Solicitudes de Expresiones Regulares

Saludos.








Miseryk

Cita de: Eleкtro en 21 Junio 2018, 09:28 AM
Solo te falta excluir de la captura cualquier caracter a la derecha de los caracteres de comentario, y capturar la palabra completa "cout", es decir:

(?<!\/\/(.+)?)\bcout\b

PD: para la próxima vez: Hilo oficial: Solicitudes de Expresiones Regulares

Saludos.

Ok, para la próxima posteo ahí, una cosa, el código no me está funcionando :(

Gracias por todo.
Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It's never too late to change our luck
So, don't let them steal your light
Don't let them break your stride
There is light on the other side
And you'll see all the raindrops falling behind
Make it out tonight
it's a revolution

CL!!!

Eleкtro

#4
Cita de: Miseryk en 22 Junio 2018, 16:19 PMel código no me está funcionando :(

Bueno, es lo que pasa si no especificas a qué sintaxis de RegEx estás sujeto, ni tampoco que significa exactamente "no me está funcionando", ¿no se te compila?, ¿no se captura lo que necesitas?. Sin más información por tu parte lo único que puedo decirte es que la expresión regular que compartí funciona de forma esperada al menos en el motor RegEx de .NET Framework y realizando la captura en la muestra de código que compartiste de C/C++.

Saludos








Miseryk

Cita de: Eleкtro en 23 Junio 2018, 17:47 PM
Bueno, es lo que pasa si no especificas a qué sintaxis de RegEx estás sujeto, ni tampoco que significa exactamente "no me está funcionando", ¿no se te compila?, ¿no se captura lo que necesitas?. Sin más información por tu parte lo único que puedo decirte es que la expresión regular que compartí funciona de forma esperada al menos en el motor RegEx de .NET Framework y realizando la captura en la muestra de código que compartiste de C/C++.

Saludos

Ah, no sabía que habían muchos RegEx o diferentes sintaxis, me refería a la página posteada, pero en la búsqueda de VS 2013 está funcionando, muchas gracias por la ayuda!

Saludos.
Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It's never too late to change our luck
So, don't let them steal your light
Don't let them break your stride
There is light on the other side
And you'll see all the raindrops falling behind
Make it out tonight
it's a revolution

CL!!!

WHK

#6
Ese tipo de condicional negada no es siempre compatible, en ves de eso te recomiendo esto:

^\s*cout\s+.*

De esta manera el cout siempre debe venir solo sin ningun caracter especial antepuesto, tomará el cout y finaliza en un espacio en blanco o más, para prevenir problemas cuando escribas por ejemplo "couting(...)".

https://regexr.com/3s12k

De todas maneras no te recomiendo hacer este tipo de búsquedas porque tendrás problemas por ejemplo cuando tu código no tenga una identación correcta, por ejemplo cuando necesites buscar esto:

if(1){ cout << abc; }

O también:

if(1){ // cout << abc; }
    demo();
}


O también:

/* //// Test */ cout << demo;

Saludos.