Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Miseryk en 20 Junio 2018, 20:13 pm



Título: RegEx
Publicado por: Miseryk en 20 Junio 2018, 20:13 pm
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
  1.    //cout <<
  2.    cout <<
  3.  

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!


Título: Re: RegEx
Publicado por: Miseryk en 20 Junio 2018, 21:19 pm
Pude lograr algo, pero no todo:

http://www.rubular.com/ (http://www.rubular.com/)

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

texto de prueba:

Código
  1. printf ()
  2. cout <<
  3.    cout <<
  4.    //    cout <<
  5. //cout <<
  6. // cout << endl << endl;
  7. // // //cout << "PosY: " << dec << (DWORD)TestPosY << endl << endl;
  8.  

(https://s33.postimg.cc/pje1zwdn3/Reg_Ex1.png)


Título: Re: RegEx
Publicado por: 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:

Código:
(?<!\/\/(.+)?)\bcout\b

PD: para la próxima vez: Hilo oficial: Solicitudes de Expresiones Regulares (https://foro.elhacker.net/programacion_general/hilo_oficial_solicitudes_de_expresiones_regulares-t434833.0.html)

Saludos.


Título: Re: RegEx
Publicado por: Miseryk en 22 Junio 2018, 16:19 pm
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:

Código:
(?<!\/\/(.+)?)\bcout\b

PD: para la próxima vez: Hilo oficial: Solicitudes de Expresiones Regulares (https://foro.elhacker.net/programacion_general/hilo_oficial_solicitudes_de_expresiones_regulares-t434833.0.html)

Saludos.

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

Gracias por todo.


Título: Re: RegEx
Publicado por: Eleкtro en 23 Junio 2018, 17:47 pm
el 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


Título: Re: RegEx
Publicado por: Miseryk en 24 Junio 2018, 06:12 am
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.


Título: Re: RegEx
Publicado por: WHK en 5 Julio 2018, 15:56 pm
Ese tipo de condicional negada no es siempre compatible, en ves de eso te recomiendo esto:

Código:
^\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:

Código:
if(1){ cout << abc; }

O también:

Código:
if(1){ // cout << abc; }
    demo();
}

O también:

Código:
/* //// Test */ cout << demo;

Saludos.