Pages in topic:   [1 2] >
necesito ayuda para crear una expresión regular de búsqueda
Thread poster: Angel Llacuna
Angel Llacuna
Angel Llacuna  Identity Verified
Spain
Local time: 10:40
English to Spanish
Jun 12, 2018

Necesito crear una expresión regular que busque la segunda aparición de un carácter de tabulación en cada línea de un archivo de texto

 
Rossana Triaca
Rossana Triaca  Identity Verified
Uruguay
Local time: 06:40
English to Spanish
Prueba Jun 12, 2018

Es un poco difícil sin saber para qué es, si la idea es sustituirlo se me ocurrió rápidamente para Notepad++:

Search: (?=\t)(.*)\t
Replace: \1texto

Donde "texto" es por lo que quiero reemplazar el tab. La coincidencia no es exactamente el segundo tab, es más bien todo lo que está entre el primer tab que encuentra en una nueva línea y ese tab, por eso al reemplazar repito lo que encontró ("match newline" tiene que estar desactivado).

Me imagino
... See more
Es un poco difícil sin saber para qué es, si la idea es sustituirlo se me ocurrió rápidamente para Notepad++:

Search: (?=\t)(.*)\t
Replace: \1texto

Donde "texto" es por lo que quiero reemplazar el tab. La coincidencia no es exactamente el segundo tab, es más bien todo lo que está entre el primer tab que encuentra en una nueva línea y ese tab, por eso al reemplazar repito lo que encontró ("match newline" tiene que estar desactivado).

Me imagino que debe haber formas más elegantes y sin duda debe ser posible hacer que ese tab sea un match individual, pero probablemente si es para sustituirlo o borrarlo esto funcione.
Collapse


 
Daniel Frisano
Daniel Frisano  Identity Verified
Italy
Local time: 10:40
Member (2008)
English to Italian
+ ...
Dos preguntas Jun 13, 2018

1) ¿Sólo encontrar o también sustituir?

2) Si hay que sustituir, ¿puedes pasarlo a Excel?

[Edited at 2018-06-13 01:24 GMT]


 
Angel Llacuna
Angel Llacuna  Identity Verified
Spain
Local time: 10:40
English to Spanish
TOPIC STARTER
es para hacer búsqueda y sustitución ... Jun 13, 2018

el segundo carácter de tabulación de cada línea se sustituirá por un espacio en blanco.
El archivo es un archivo de texto plano , con el que trabajo en Notepad++. En este caso, un glosario al que voy añadiendo entradas.

En la imagen podéis ver un fragmento del archivo, donde aparecen marcados en rojo un par de caracteres de tabulación que deberán sustituirse (son la segunda tabulación en la línea respectiva)

...
See more
el segundo carácter de tabulación de cada línea se sustituirá por un espacio en blanco.
El archivo es un archivo de texto plano , con el que trabajo en Notepad++. En este caso, un glosario al que voy añadiendo entradas.

En la imagen podéis ver un fragmento del archivo, donde aparecen marcados en rojo un par de caracteres de tabulación que deberán sustituirse (son la segunda tabulación en la línea respectiva)

Collapse


 
Daniel Frisano
Daniel Frisano  Identity Verified
Italy
Local time: 10:40
Member (2008)
English to Italian
+ ...
En Excel Jun 13, 2018

Bueno, si se puede pasarlo temporalmente a Excel y de vuelta a Notepad++ sin que ocurran desastres, se puede intentar con lo siguiente:

1) Sustituir todos las tabuladores con un carácter que no se usa nunca, por ejemplo §.

2) Pasarlo a Excel. Si el texto está en la columna A, en la B se pone:

=LEFT(REPLACE(REPLACE(REPLACE(CONCAT(A1;"§§");FIND("§";CONCAT(A1;"§§"));1;"!");FIND("§";REPLACE(CONCAT(A1;"§§");FIND("§";CONCAT(A1;"§§"));1;"!"));1;" ");
... See more
Bueno, si se puede pasarlo temporalmente a Excel y de vuelta a Notepad++ sin que ocurran desastres, se puede intentar con lo siguiente:

1) Sustituir todos las tabuladores con un carácter que no se usa nunca, por ejemplo §.

2) Pasarlo a Excel. Si el texto está en la columna A, en la B se pone:

=LEFT(REPLACE(REPLACE(REPLACE(CONCAT(A1;"§§");FIND("§";CONCAT(A1;"§§"));1;"!");FIND("§";REPLACE(CONCAT(A1;"§§");FIND("§";CONCAT(A1;"§§"));1;"!"));1;" ");FIND("!";REPLACE(REPLACE(CONCAT(A1;"§§");FIND("§";CONCAT(A1;"§§"));1;"!");FIND("§";REPLACE(CONCAT(A1;"§§");FIND("§";CONCAT(A1;"§§"));1;"!"));1;" "));1;"§");LEN(A1))

Untitled-1

3) Volver a Notepad++ y sustituir todos los § con tabuladores.
Collapse


 
Angel Llacuna
Angel Llacuna  Identity Verified
Spain
Local time: 10:40
English to Spanish
TOPIC STARTER
gracias Daniel ... Jun 13, 2018

quisiera una forma de hacerlo directamente desde dentro de NotePad++

 
Rossana Triaca
Rossana Triaca  Identity Verified
Uruguay
Local time: 06:40
English to Spanish
... Jun 13, 2018

En mi post, donde dice "texto" pones un espacio en blanco y listo (dejando el /1), funciona bien.

 
Christophe Delaunay
Christophe Delaunay  Identity Verified
France
Local time: 10:40
Spanish to French
+ ...
¡Qué nivel, Daniel! Jun 13, 2018

Daniel Frisano wrote:


=LEFT(REPLACE(REPLACE(REPLACE(CONCAT(A1;"§§");FIND("§";CONCAT(A1;"§§"));1;"!");FIND("§";REPLACE(CONCAT(A1;"§§");FIND("§";CONCAT(A1;"§§"));1;"!"));1;" ");FIND("!";REPLACE(REPLACE(CONCAT(A1;"§§");FIND("§";CONCAT(A1;"§§"));1;"!");FIND("§";REPLACE(CONCAT(A1;"§§");FIND("§";CONCAT(A1;"§§"));1;"!"));1;" "));1;"§");LEN(A1)) [/quote]


 
Daniel Frisano
Daniel Frisano  Identity Verified
Italy
Local time: 10:40
Member (2008)
English to Italian
+ ...
Explicación Jun 13, 2018

Christophe Delaunay wrote:

¡Qué nivel!



Es mucho menos complicado de lo que parece. Funciona así:

Untitled-1

A1 es el texto original
B1 = CONCAT(A1;"§§") // añade dos § al final para evitar errores
C1 = REPLACE(B1;FIND("§";B1);1;"!") // sustituye el primer § con !
D1 = REPLACE(C1;FIND("§";C1);1;" ") // sustituye el segundo § con un espacio
E1 = REPLACE(D1;FIND("!";D1);1;"§") // vuelve a poner el primer §
F1 = LEFT(E1;LEN(A1)) // quita los dos §§ añadidos al principio

Encajando todas las funciones en una aparece ese monstruo (que nunca sabría escribir de golpe).

Es mucho más elegante la solución de Rossana, sin tanto mareo...


 
Angel Llacuna
Angel Llacuna  Identity Verified
Spain
Local time: 10:40
English to Spanish
TOPIC STARTER
gracias a todos por vuestras aportaciones ... Jun 13, 2018

probaré la solución de Rossana y os digo como ha ido.
Saludos desde España.


 
Angel Llacuna
Angel Llacuna  Identity Verified
Spain
Local time: 10:40
English to Spanish
TOPIC STARTER
hola Rossana Jun 15, 2018

Rossana Triaca wrote:

Es un poco difícil sin saber para qué es, si la idea es sustituirlo se me ocurrió rápidamente para Notepad++:

Search: (?=\t)(.*)\t
Replace: \1texto

Donde "texto" es por lo que quiero reemplazar el tab. La coincidencia no es exactamente el segundo tab, es más bien todo lo que está entre el primer tab que encuentra en una nueva línea y ese tab, por eso al reemplazar repito lo que encontró ("match newline" tiene que estar desactivado).

Me imagino que debe haber formas más elegantes y sin duda debe ser posible hacer que ese tab sea un match individual, pero probablemente si es para sustituirlo o borrarlo esto funcione.


La expresión de búsqueda sugerida no me encuentra el segundo tab de cada línea, sino que los encuentra todos


.....
.....
.....


 
Rossana Triaca
Rossana Triaca  Identity Verified
Uruguay
Local time: 06:40
English to Spanish
Otra prueba (creo que por la segunda imagen me doy cuenta de lo que pasa) Jun 15, 2018

(\t)(.*?)(\t)
\1\2

(con un espacio después del 2). Igual que el anterior, selecciona lo que está en el medio, pero como después lo copia no debería haber problema.


 
FarkasAndras
FarkasAndras  Identity Verified
Local time: 10:40
English to Hungarian
+ ...
No Jun 15, 2018

Rossana Triaca wrote:

(\t)(.*?)(\t)
\1\2

(con un espacio después del 2). Igual que el anterior, selecciona lo que está en el medio, pero como después lo copia no debería haber problema.


Esto también encuentra todos los tabs si hay varios en la línea.

Así es mejor:
^([^\t]*\t[^\t]*)\t
reemplazar con:
\1[lo que quieras]

Explicación:
^ - inicio de línea
() - memorizar contenido
[^\t]* cualquier número de carácteres que no sean tab


 
Angel Llacuna
Angel Llacuna  Identity Verified
Spain
Local time: 10:40
English to Spanish
TOPIC STARTER
gracias Rossana y Farkas por vuestras sugerencias de expresión de búsqueda ... Jun 15, 2018

pero he comprobado que no son efectivas para seleccionar solamente la segunda tabulación de cada línea. En lugar de ello, se seleccionan porciones mucho mayores del texto

 
Rossana Triaca
Rossana Triaca  Identity Verified
Uruguay
Local time: 06:40
English to Spanish
Haz una copia del archivo y prueba la sustitución Jun 15, 2018

¿Probaste la sustitución? Ninguna de las soluciones selecciona solo lo que quieres, pero sí hacen lo que necesitas porque con regex se pueden conservar los matches, es decir, estás copiando y pegando en los resultados lo que encontró, así que no te altera el texto que no quieres, solo el segundo tab.

Es más fácil que pruebas las sustituciones que te dimos y veas cómo funcionan que explicarlo...


 
Pages in topic:   [1 2] >


To report site rules violations or get help, contact a site moderator:


You can also contact site staff by submitting a support request »

necesito ayuda para crear una expresión regular de búsqueda






TM-Town
Manage your TMs and Terms ... and boost your translation business

Are you ready for something fresh in the industry? TM-Town is a unique new site for you -- the freelance translator -- to store, manage and share translation memories (TMs) and glossaries...and potentially meet new clients on the basis of your prior work.

More info »
Anycount & Translation Office 3000
Translation Office 3000

Translation Office 3000 is an advanced accounting tool for freelance translators and small agencies. TO3000 easily and seamlessly integrates with the business life of professional freelance translators.

More info »