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
//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!
Pude lograr algo, pero no todo:
http://www.rubular.com/ (http://www.rubular.com/)
regular expression: (?<!\/\/)(cout)
texto de prueba:
printf ()
cout <<
cout <<
// cout <<
//cout <<
// cout << endl << endl;
// // //cout << "PosY: " << dec << (DWORD)TestPosY << endl << endl;
(https://s33.postimg.cc/pje1zwdn3/Reg_Ex1.png)
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 (https://foro.elhacker.net/programacion_general/hilo_oficial_solicitudes_de_expresiones_regulares-t434833.0.html)
Saludos.
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 (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.
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
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.
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.