Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: vvcepheus7 en 10 Diciembre 2011, 18:15 pm



Título: Expresión regular para buscar y reemplazar en notepad++
Publicado por: vvcepheus7 en 10 Diciembre 2011, 18:15 pm
Hola,

Veréis, tengo un fichero txt muy largo dentro del cual hay direcciones de lugares que necesito.

He visto que entre direccion y dirección hay 6 saltos de línea. Por lo tanto solo necesito suprimir el texto sobrante que hay entre dirección y dirección para que el txt me quede limpio del texto sobrante.

O sea, el formato que tengo ahora mismo es este:

Dirección
Texto inútil
Dirección
Texto inútil
Dirección
Texto inútil
(...)

Entonces, la dirección ocupa solo una línea. El texto inútil ocupa 6 líneas.
Me podríais decir como sería la expresión que me permita suprimir el texto que no quiero?

Gracias y un saludo


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: [Case] en 10 Diciembre 2011, 18:44 pm
En java serie algo asi:

Código:
String dirección = archivo.readLine();
for(int i = 0; i<6; i++){
    archivo.readLine();
}

Esto lee la dirección y se deshace de 6 lineas que no te sirven.


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: vvcepheus7 en 10 Diciembre 2011, 18:46 pm
gracias por la info compañero, pero es que yo no soy programador. Mi intención es usar el notepad de windows, el notepad++ o directamente el word.

Sabrías hacerlo usando ese lenguaje?

Un saludo y gracias igualmente!


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: [Case] en 10 Diciembre 2011, 19:26 pm
Tengo entendido que Notepad++ es simplemente un editor que acepta sintaxis de muchos lenguajes de programación.
Por lo que no es un lenguaje.
Supongo que deberías buscar algún plugin que haga lo que necesites.


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: vvcepheus7 en 10 Diciembre 2011, 19:32 pm
A ver, yo según he mirado en estos links que te paso tenia entendido que existen unos comodines que se pueden usar dentro de los campos "buscar" y "reemplazar" de forma que puedes "programar" la búsqueda de forma muy exacta.

para word:
http://office.microsoft.com/es-es/word-help/buscar-y-reemplazar-texto-usando-expresiones-regulares-avanzado-HA102350661.aspx

para notepad++:
http://sheldonrules.blogspot.com/2010/11/referencias-tokens-de-expresiones.html

El problema es que yo no soy programador, entonces no sé como funciona la escritura de expresión pero imagino que para hacer lo que he dicho será una tontería. Lo único que falta saber es como se escribe  :(

Gracias y un saludo


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: Novlucker en 10 Diciembre 2011, 19:36 pm
Y no te es más sencillo abrir ese mismo archivo en excel y quedarte con todas las filas múltiples de 7 ...+1? :P

Saludos


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: vvcepheus7 en 10 Diciembre 2011, 19:37 pm
no sabía que eso podía hacerse! como se hace????  :D


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: vvcepheus7 en 10 Diciembre 2011, 19:55 pm
he conseguido importar los datos a excel pero se me importan también las filas que no necesito.

Una vez importados, como hago para borrar todos las filas innecesarias y juntar las restantes para que queden compactas? Es que si no tengo que hacer seleccionar, borrar de todo y mover... sería demasiado trabajo aún 

Gracias y un saludo!


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: vvcepheus7 en 10 Diciembre 2011, 19:56 pm
error de edicion.


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: Novlucker en 10 Diciembre 2011, 23:48 pm
En una columna debería de agregar la siguiente función ... =SI(RESTO(FILA()-1;7)=0;VERDADERO;FALSO) , la arrastras para cubrir toda la tabla, y luego con un autofiltro seleccionas todos los verdaderos, eso lo copias y pegas en otro lado :P

Saludos


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: vvcepheus7 en 11 Diciembre 2011, 00:00 am
Gracias por la respuesta compañero pero no acabo de comprender qué quieres decir.

O sea, yo parto de la base que ya tengo el excel con el formato este:

A B
1 DIRECCIÓN | CIUDAD
2 TEXTO INÚTIL
3 TEXTO INÚTIL
4 TEXTO INÚTIL
5 TEXTO INÚTIL
6 TEXTO INÚTIL
7 TEXTO INÚTIL
8 DIRECCIÓN | CIUDAD
9 TEXTO INÚTIL
10 TEXTO INÚTIL
11 TEXTO INÚTIL
12 TEXTO INÚTIL
13 TEXTO INÚTIL
14 TEXTO INÚTIL
15 DIRECCIÓN | CIUDAD
(...)

Para clarificar he enumerado cada fila y cada columna.

Entonces, yo deseo eliminar todas las filas inútiles (donde hay texto inútil) y juntar todas las filas útiles (o sea, las de las direcciones).

Entonces tu me dices que copie esta expresión:
=SI(RESTO(FILA()-1;7)=0;VERDADERO;FALSO)

Pero en qué casilla lo hago? ¿o lo hago antes de importar los datos en el excel? Si lo copio a saco en una casilla vacila solo me sale: "¿#nombre#?"

Puedes explicarme con un poco más de detalle?

Gracias de antemano y un saludo!


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: Novlucker en 11 Diciembre 2011, 00:03 am
Por ejemplo en C1, y luego arrastras, revisa por si acaso que no haya que cambiar los punto y comas por comas, dependiendo de como este configurado excel, lleva unos u otros :P

Saludos


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: vvcepheus7 en 11 Diciembre 2011, 00:09 am
Bueno, he editado el post anterior porque estaba con errores de escritura, no sé si ahora se entenderá mejor.

Si copio sobre C1 y luego arrastro primero horizontalmente y luego verticalmente me sobre-escribe los datos que ya había con el texto de la fórmula que me has dado. Entonces pierdo los datos.

Lo de los puntos y las comas la verdad es que no tengo NPI de como es la sintaxis. He probado de cambiar los ; por , y me ha salido error de sintaxis.

Seguro que el fallo es una tontería!

No sería posible hacerlo con una macro? quizá iremos mas rapido.

Gracias de nuevo


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: Stoya en 11 Diciembre 2011, 00:15 am
Reemplazas:
Código:
(Dirección[^\n]+)[^\n]*\n[^\n]*\n[^\n]*\n[^\n]*\n[^\n]*\n[^\n]*\n

Por:
Código:
\1


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: Novlucker en 11 Diciembre 2011, 00:16 am
¿Como horizontalmente? Si tu tienes los datos en las columnas A y B como pones, pega la fórmula en C1 y arrastra para abajo, es imposible que sobreescriba nada si se supone que esta vacío, la fórmula tiene que funcionar, así que si no prueba escribiendola a mano (supongo que esta claro que la fórmula es para un excel en español)

Saludos


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: vvcepheus7 en 11 Diciembre 2011, 00:20 am
Reemplazas:
Código:
(Dirección[^\n]+)[^\n]*\n[^\n]*\n[^\n]*\n[^\n]*\n[^\n]*\n[^\n]*\n

Por:
Código:
\1

muchas gracias por por la respuesta stoya.

pero esto en el notepad++? o sea, voy a "buscar y reemplazar" y:

buscar:
(Dirección[^\n]+)[^\n]*\n[^\n]*\n[^\n]*\n[^\n]*\n[^\n]*\n[^\n]*\n

reemplazar:
\1

o que quieres decir?

lo siento es que es la primera vez que hago algo así y estoy mu verde aún!
gracias otra vez


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: vvcepheus7 en 11 Diciembre 2011, 00:40 am
Novlucker, intentaba cubrir toda la tabla, no solo la columna vacia, por eso no funcionaba claro jaja.

Creo que voy a poder hacerlo solo con el autofiltro y sin usar la expresión. Sigo sin entender como copiarla pero da igual, soy un cilindron y no hay nada que hacer  :P :xD :laugh:

stoya, si puedes aclárame eso del notepad++ que parece más facil, a ver si así tengo una alternativa!

!!!Gracias a los dos!!!
 :D


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: Stoya en 11 Diciembre 2011, 00:43 am
pero esto en el notepad++? o sea, voy a "buscar y reemplazar" y:

buscar:
(Dirección[^\n]+)[^\n]*\n[^\n]*\n[^\n]*\n[^\n]*\n[^\n]*\n[^\n]*\n

reemplazar:
\1

o que quieres decir?
¿Por qué me preguntas? ¿No tardamos menos los dos si pruebas y si no funciona le das a ctrl+z?

Una cosa es usar los foros y otra abusar de ellos, eso no es ser cilindrón, es ser huevón.


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: vvcepheus7 en 11 Diciembre 2011, 00:45 am
stoya, si lo he probado pero me sale este mensaje de error:


---------------------------
Find
---------------------------
Can't find the text:

"(Dirección[^\n]+)[^\n]*\n[^\n]*\n[^\n]*\n[^\n]*\n[^\n]*\n[^\n]*\n"
---------------------------
Aceptar   
---------------------------


entonces por eso pregunto, no es por fastidiar campeon!
 :silbar:


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: Stoya en 11 Diciembre 2011, 00:49 am
Pues depura.

Es tu problema, campeón.


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: vvcepheus7 en 11 Diciembre 2011, 01:13 am

stoya, si, es mi problema y esta solucionado sin tu ayuda, así que no te hagas tanto el listo porque esto es una chorrada.

Y por otra parte creo sinceramente que el huevón eres tu por no saber redactar una respuesta entendible y clara para algo tan simple. Así que si te molesta que te re-pregunten ahórrate el contestar.

saludos


Título: Re: Expresión regular para buscar y reemplazar en notepad++
Publicado por: vvcepheus7 en 11 Diciembre 2011, 01:14 am
puede cerrarse el hilo, esta solucionado.

Con excel, podría ejecutarse esta macro:

Sub elimina_filas_inutiles()
Dim primera As Long
Dim segunda As Long
Dim ultima As Long
Dim i As Long
primera = InputBox("Indique la primera fila válida", , 4)
segunda = InputBox("Indique la segunda fila válida", , 11)
ultima = ActiveCell.SpecialCells(xlLastCell).Row
For i = ultima To primera Step -1
If (i Mod (segunda - primera)) - primera <> 0 Then
Cells(i, 1).EntireRow.Delete
End If
Next i
End Sub


Suprime las filas sobrantes y junta las filas restantes, todo de golpe.
Gracias Novlucker por orientarme