Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Mutis99 en 15 Marzo 2012, 18:59 pm



Título: Expresión regular para eliminar fragmentos de texto en un archivo
Publicado por: Mutis99 en 15 Marzo 2012, 18:59 pm
Hola amigos, tengo una duda con una expresión regular. El tema es que tengo un diccionario en un archivo .txt y quisiera eliminar la parte de los antónimos y ciertos caracteres como doble barra (//) y algunas abreviaturas como (ant.), (cont.), etc.
Para empezar, me he creado un pequeño script php donde escribo en otro txt y sustituyo dichas expresiones. Pero la principal dificultad se me plantea con los fragmentos de texto que no me interesan, los antónimos. he probado lo siguiente:

Normalmente comienza con la abreviatura ant. sigue con una cadena de texto donde hay espacios, comas, finales de línea y termina en un punto

Citar
Ant. Oclusión, cerramiento,
obturación, clausura,
cierre.

Por lo tanto probé con esto
Código:
	$archivotexto   = file_get_contents ("sinonimos.txt");		

$texto = preg_replace ("/(ant)\.[[:alnum:]]\./i", "", $archivotexto);

$fp = fopen("sinonimos2.txt","w");
  fwrite($fp, $texto);
  fclose($fp);


sin embargo no me funciona, podríais arrojarme algo de luz? Gracias


Título: Re: Expresión regular para eliminar fragmentos de texto en un archivo
Publicado por: HdM en 15 Marzo 2012, 19:28 pm

Código:
	$texto = preg_replace ("/(ant)\.[[:alnum:]]\./i", "", $archivotexto);

Buenas.

Imagino que será debido a que la función preg_replace interpreta el primer parámetro como un literal y no lo encuentra. Creo que deberías hacer varias llamadas a la función y en cada una de ellas, pasar lo que realmente pueda encontrar. Es decir en una llamada pasas "/", en otra llamada "(ant.)" y así sucesivamente hasta hacer el barrido completo.

Saludos.